填坑,整理下Java的常用异常。正确利用异常在实际编码中很是重要,但口试中的意义相对较小,因为对异常的领略和应用很难通过几句话或几行代码观察出来,不外我们至少应答出三点:异常类的担任干系、常用异常类、常用异常类的利用场景,下文将环绕这三点先容。
异常类的担任干系
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。
上述异常类都是很常见的,但个中几个异常类设计的欠好,需要留意:
常用异常类的利用场景
常用异常照旧有点多,下面别离讲授上述三个类此外利用场景,并在每个种别中选一个例子举办讲授。
Error
Error凡是描写了系统级的错误,而且措施猿无法主动处理惩罚——虽然,系统级错误也有大概由代码间接导致,这不在我们的接头范畴内。产生系统级错误的时候,系统情况已经不康健了,因此,劳务派遣管理系统,Error不强制捕捉或声明,也就是不强制处理惩罚,一般环境下只需要把异常信息记录下来(假如能记下其时的系统快照更好)。
OutOfMemoryError
当可用内存不敷时,会由JVM抛出OutOfMemoryError。一般由三种原因导致:
JVM抛出OutOfMemoryError前,会实验举办一次Full GC,假如GC后可用内存照旧不敷,才会抛出OutOfMemoryError。因此,这时措施猿一定无法主动处理惩罚这一问题,只能等措施瓦解后再去查证原因。
查证OutOfMemoryError的能力足以单开一篇文章了,本文不作深入。
UncheckedException
严格来说,Error也可以被划归UncheckedException,但我们更习习用UncheckedException描写运行期产生,凡是由于代码问题直接引起的措施相关的错误,而且措施猿无法主动处理惩罚。留意区分,系统级错误都应该用Error描写。UncheckedException产生的大部门环境是代码写挫了,因此,UncheckedException也不强制捕捉或声明,也就是不强制处理惩罚,一般环境下记下日志即可。
差异的是,假如大概,要担保UncheckedException是可控的(在异常被动抛出前查抄并主动抛出)。
JSONException就是不行控的。
NullPointerException