欢迎访问昆山宝鼎软件有限公司网站! 设为首页 | 网站地图 | XML | RSS订阅 | 宝鼎邮箱 | 宝鼎售后问题提交 | 后台管理


新闻资讯

MENU

软件开发知识

Java 常用异 劳务派遣信息管理系统 常整理

点击: 次  来源:昆山软开发 时间:2017-11-16

原文出处: 猴子007

填坑,整理下Java的常用异常。正确利用异常在实际编码中很是重要,但口试中的意义相对较小,因为对异常的领略和应用很难通过几句话或几行代码观察出来,不外我们至少应答出三点:异常类的担任干系、常用异常类、常用异常类的利用场景,下文将环绕这三点先容。

异常类的担任干系

java_exception

Java中,所有异常都担任自Throwable类(一个完整可用的类)。整体上分为Error、Exception两个大类,Exception大类又分为UncheckedException(担任于RuntimeException)和CheckedException(担任于Exception,但不担任于RuntimeException)。

为了辅佐领略,我在每个种别下都给出了两个常用子类,如Error包罗OutOfMemoryError、AssertionError等;UncheckedException包罗NullPointerException、IllegalArgumentException;CheckedException包罗IOException、InterruptedException。口试画异常类的担任干系时,要求能清楚的说明几个种别并分种别举几个常用的异常类。

常用异常类

下面分种别扩充一下常用的异常类,字典序排序:

种别 常用异常类
Error AssertionError、OutOfMemoryError、StackOverflowError
UncheckedException AlreadyBoundException、ClassCastException、ConcurrentModificationException、IllegalArgumentException、IllegalStateException、IndexOutOfBoundsException、JSONException、NullPointerException、SecurityException、UnsupportedOperationException
CheckedException ClassNotFoundException、CloneNotSupportedException、FileAlreadyExistsException、FileNotFoundException、InterruptedException、IOException、SQLException、TimeoutException、UnknownHostException

需要着重领略的是UncheckedException。

上述异常类都是很常见的,但个中几个异常类设计的欠好,需要留意:

  • ConcurrentModificationException:实现“快速失败”的机制,但实际上,“快速失败”机制自己仍然无法担保并发情况下安详性,参考源码|从源码阐明非线程安详荟萃类的不安详迭代器。因此,固然该异常很常见,不要去依赖它。
  • JSONException:常见于json字符串理会失败的环境,但遮蔽了大量的失败细节,往往很难按照该异常作出处理惩罚。假如项目中大量利用json,发起利用第三方的json理会库,如gson等。
  • UnsupportedOperationException:这是一种编码上的恶性妥协,常常在抽象类的成员要领中被用户主动抛出,暗示该要领还未实现等,但由于是UncheckedException,运行期才气够发明,完全无益于编码期间的安详性。本身编码时只管不要利用。
  • SQLException:与JSONException原因相似,但其遮蔽的失败细节范畴更广。同时,SQLException照旧一个CheckedException,在不能办理问题的环境下,又使代码变的臃肿不堪。发起同。假如做Java Web开拓,热门的ORM库都能办理上述问题。
  • 常用异常类的利用场景

    常用异常照旧有点多,下面别离讲授上述三个类此外利用场景,并在每个种别中选一个例子举办讲授。

    Error

    Error凡是描写了系统级的错误,而且措施猿无法主动处理惩罚——虽然,系统级错误也有大概由代码间接导致,这不在我们的接头范畴内。产生系统级错误的时候,系统情况已经不康健了,因此,劳务派遣管理系统,Error不强制捕捉或声明,也就是不强制处理惩罚,一般环境下只需要把异常信息记录下来(假如能记下其时的系统快照更好)。

    OutOfMemoryError

    当可用内存不敷时,会由JVM抛出OutOfMemoryError。一般由三种原因导致:

  • 堆配置过小,不满意正常的内存需求
  • 代码中存在内存泄露,占用了大量内存而不能被接纳
  • 选择的GC算法与某些极度的应用场景不匹配,内存碎片过多,没有足够大的持续空间分派给工具
  • JVM抛出OutOfMemoryError前,会实验举办一次Full GC,假如GC后可用内存照旧不敷,才会抛出OutOfMemoryError。因此,这时措施猿一定无法主动处理惩罚这一问题,只能等措施瓦解后再去查证原因。

    查证OutOfMemoryError的能力足以单开一篇文章了,本文不作深入。

    UncheckedException

    严格来说,Error也可以被划归UncheckedException,但我们更习习用UncheckedException描写运行期产生,凡是由于代码问题直接引起的措施相关的错误,而且措施猿无法主动处理惩罚。留意区分,系统级错误都应该用Error描写。UncheckedException产生的大部门环境是代码写挫了,因此,UncheckedException也不强制捕捉或声明,也就是不强制处理惩罚,一般环境下记下日志即可。

    差异的是,假如大概,要担保UncheckedException是可控的(在异常被动抛出前查抄并主动抛出)。

    JSONException就是不行控的。

    NullPointerException