Java异常
Java 异常
Java异常类继承关系如下:
可以看出所有异常类都是继承自throwable,异常分为两大类error和exception。error是不可恢复的错误,当发生error时程序异常结束且不可恢复,常见error有StackOverFlowError、OutOfMemoryError等。exception是异常我们可以通过trycatch进行捕获处理从而让程序继续执行下去。exception又可细分为运行时异常(也叫非检查异常)和编译时异常(又叫检查异常),运行时异常主要发生在程序运行时,程序在编译时不会检查该类异常,常见的运行时异常包括NullPointerException、IllegalStateException、IllegalArgumentException等。编译时异常需要我们在编写代码时就要做出处理捕获或抛出,否则编译不通过,常见的编译时异常包括IOException等。
上面我们说过异常的处理可以是捕获或抛出。
- 捕获即用try catch(finally)
- 抛出则使用throw或throws,throws是放在函数声明的尾部,throw则是在方法内部进行异常抛出。
Java提供了众多的异常类但是我们仍然可以自定义属于自己的异常类
- 所有异常都必须是 Throwable 的子类。
- 如果希望写一个检查性异常类,则需要继承 Exception 类。
- 如果你想写一个运行时异常类,那么需要继承 RuntimeException 类。
最后说下finally的使用,一般finally是在try catch之后执行的,但有两种情况下是不会执行的一是没有执行到try就返回了另一种是在try结构中System.exit退出了jvm。再有就是finally的执行时机 简单来说就是在如果try中有return 那么它在return之后 实际返回之前执行,如果finally中也有return 那么它会抢断try中的return即实际执行的是finally中的return。所以在finally中我们尽量不要再去操作对象进行赋值等操作,finally中仅建议做一些资源关闭、回收的工作。
- 异常链
即在捕获一个异常后抛出另外一个异常,并且希望把原始异常信息保存下来
参考链接:
Java 常见异常种类 - QiaoZhi - 博客园
Java:详解Java中的异常(Error与Exception)_王晓(Java)-CSDN博客_java 异常
Android相关异常
https://10c6f414.wiz03.com/wapp/pages/view/share/s/0gNLgk2BdQ_V2DP2-B3OMkr42C7Plu3V7AAm2-lmXq19bP3q