Exception
-
-
- 什么是异常/li>
- Java中有哪些异常/li>
- 异常处理 try-catch
- 处理多个异常
- 异常处理 finally
- throws
- throw
- RuntimeException
- 自定义异常
- 垃圾回收机制GC
-
什么是异常/h3>
异常就是指程序执行过程中遇到的非正常情况,导致JVM非正常停止。
Java中有哪些异常/h3>
处理多个异常
当代码块中的代码可能有多个异常时,可以使用连起来的catch块。
如果同时存在父类和子类异常,必须把子类异常放在前面,如果子类异常已经能够处理,父类异常就不会再处理。
上面的方式看起来很冗余,如果是没有继承关系的异常,可以这么写:
如果编译时异常的数量实在太多,添加很麻烦,你可以用它们的父类直接代替,比如用Exception,能处理所有异常。
异常处理 finally

- finally语句为异常处理提供的一个统一的出口,使得在控制流程到程序其它部分之前,能够对程序的状态作统一的管理。
- 无论try所指的程序是否抛出异常,finally所指定的代码必须执行。
- 通常finally在语句中可以进行资源的释放工作,如关闭打开的文件,关闭数据库连接等。
throws
程序中会声明很多方法,这些方法中可能会因某些错误而引发异常,但不希望在这个方法中处理这些异常,而希望调用它的方法统一处理,这时候就需要使用关键字声明在这个方法上抛出异常。
- 运行时异常可以不处理,出现问题后,需要我们回来修改代码。
- 编译时异常必须要处理
与的区别/strong>
try-catch即时处理,处理后就不需要再处理了。
throws是将来谁调用谁来处理。
如果一直throws,需要throws到入口程序
throw
- 当程序发生错误而无法处理时,会抛出对应的异常对象,除此之外,若想要自行抛出异常,此时需要用到“throw”关键字,并生成指定的异常对象后抛出。
- throw定义在方法内,用来抛出一个异常对象。
RuntimeException
RuntimeException类属于非检查异常,因为普通JVM操作引起的运行时异常随时可能发生,此类异常一般是由特定操作引发。但这些操作在Java应用程序中会频繁出现。因此它们不受编译期检查与处理或者声明规则的限制。
常见RuntimeException异常
子类异常 | 说明 |
---|---|
NullPointerException | 当应用程序试图在需要对象的地方使用null时,抛出该异常 |
ArrayIndexOutOfBoundsException | 当使用的数组下标超出数组允许范围时,抛出该异常 |
ClassCastException | 当试图将对象强制转换为不是实例的子类时,抛出该异常 |
NumberFormatException | 当应用程序试图将字符串转换成一种数值类型,但该字符串不能转换为适当的格式时,抛出该异常 |
自定义异常
异常机制可以保证程序更安全和健壮。虽然类库已经提供很多可以直接处理异常的类,但是有时候为了更加精准地捕获和处理异常以呈现更好的用户体验,需要开发者自定义异常。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!