加入收藏 | 设为首页 | 会员中心 | 我要投稿 河北网 (https://www.hebeiwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

阿内里试:关于Java的非常,你能说几多?

发布时间:2019-07-17 13:32:24 所属栏目:建站 来源:老顾聊技术
导读:小搭档们对Java的非常应该是不生疏的,不外许多人只是简朴的应用罢了,而没有全面的,整体的去相识Java的非常系统。本日老顾就来跟各人一路进修JAVA的非常。 3W原则 哪都有的3W原则,JAVA非常也可以总结3W:what、where、why what对应非常范例:答复了什么

小搭档们对Java的非常应该是不生疏的,不外许多人只是简朴的应用罢了,而没有全面的,整体的去相识Java的非常系统。本日老顾就来跟各人一路进修JAVA的非常。

3W原则

哪都有的3W原则,JAVA非常也可以总结3W:what、where、why

  • what对应非常范例:答复了什么被抛出
  • where对应非常仓库跟踪:答复了在哪抛出
  • why对应非常信息:答复了为什么被抛出

非常系统

阿内里试:关于JAVA的非常,你能说几多?

上图我们看出Throwable是非常的顶级类,Error和Exception是他的子类。

Exception又分RuntimeException和非RuntimeException子类。

Error与Exception区别

我们看一下他们的观念界说:

(1) Error:措施无法处理赏罚的体系错误,编译器不做搜查。

  • Error暗示体系致命的错误,措施没法处理赏罚。一样平常是与JVM相干的题目,如体系瓦解,内存溢出,要领挪用栈溢出等,如:常常碰着的StackOverflowError、OutOfMemoryError。这种范例的错误,编译器不做搜查,都是体系运行进程中产生的。
  • 这些错误靠我们措施自己是无法处理赏罚与提防的,碰着了提议直接措施中止、重启。

(2) Exception:措施可以处理赏罚的非常,捕捉后可处理赏罚。

  • Exception非常是措施可以或许捕捉的,也可以做非常处理赏罚,我们要尽也许的行止理赏罚,使措施继承运行,而不是中止措施。
  • 总结一下就是Error是措施无法处理赏罚的错误,Exception是可以处理赏罚的非常。

RuntimeException与否区别

阿内里试:关于JAVA的非常,你能说几多?

上图中Exception有两种范例的非常,我们来看一下。

(1) RuntimeException:不行预知的,措施该当自行停止

  • 作甚不行预知?如:数组下标越界,会见工具空指针等,这种非常是我们小搭档们在编写措施时要只管停止。也就是我们措施员是可以或许停止的。
  • 如针对空指针非常,我们应该在编程的时辰,加上空指针判定,if(obj == null)怎样怎样,这样就停止了空指针非常。

(2) 非RuntimeException:可预知的,编译器可搜查的非常

  • 可预知,如:在我们打开一个文件时,如文件不存在引用的非常。
  • 这种非常编译器会搜查出来,必需必要处理赏罚的。
  • 这个也称之为Checked Exception非常范例

责任归属

我们从责任角度看:

  • Error属于JVM必要包袱的责任
  • RuntimeException是措施应该包袱的责任
  • 非RuntimeException(CheckedException)可搜查非常是JAVA编译器应该包袱的责任

上面代码直观一点:

阿内里试:关于JAVA的非常,你能说几多?

们看到Error和RuntimeException编译器是不搜查的,而CheckedExcepton非常编译器是搜查的,也就是我们措施员是必必要捕捉处理赏罚的。那怎么处理赏罚呢?

(1) try-catch方法

阿内里试:关于JAVA的非常,你能说几多?

用try-catch方法捕捉这个非常,可以在catch代码段举办非常逻辑处理赏罚,这个就凭证现实营业而定。如上图代码是FileNotFound非常,按照这个范例我们就知道是文件句柄不存在,那我们应该做哪些处理赏罚。如:提醒一下用户该文件不存在

(2) 上抛非常方法

在伟大的营业中,我们的措施员本身写的模块,很有也许被其他措施员写的模块举办引用,为了可以或许让其他措施员知道我们模块的非常,并要他们要举办处理赏罚,我们就可以回收上抛非常方法

阿内里试:关于JAVA的非常,你能说几多?

我们看一下上层挪用的处理赏罚

阿内里试:关于JAVA的非常,你能说几多?

我们看到上抛非常,是必要挪用方举办处理赏罚的。那处理赏罚的方法是什么呢?着实就是上面讲的try-catch或继承上抛。

常见的Error和Exception

(1) RuntimeException

  • NullPointerException - 空指针引用非常
  • ClassCastException - 范例逼迫转换非常
  • IllegalArgumentException - 转达犯科参数非常
  • IndexOutOfBoundsException - 下标越界非常
  • NumberFormatException - 数字名目非常

(2) 非RuntimeException

  • ClassNotFoundException - 找不到指定class非常
  • IOException - IO操纵非常

(3) Error

  • NoClassDefFoundError - 找不到class界说的非常
  • StackOverflowError - 深递归导致栈被耗尽抛出的非常
  • OutOfMemoryError - 内存溢出非常

总结

本日老顾先容了非常的相干常识,这点在我们体系开拓时长短常重要的,尤其在我们计划体系时,要界说我们体系本身的非常,这个必要整体筹划非常范例、非常Code、非常信息等,可以或许起到很好的排盘查题,并利便捕捉处理赏罚。

(编辑:河北网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读