Java面向对象_27 异常

Exception

      • 什么是异常/li>
      • Java中有哪些异常/li>
      • 异常处理 try-catch
      • 处理多个异常
      • 异常处理 finally
      • throws
      • throw
      • RuntimeException
      • 自定义异常
      • 垃圾回收机制GC

什么是异常/h3>

异常就是指程序执行过程中遇到的非正常情况,导致JVM非正常停止。

Java中有哪些异常/h3>

处理多个异常

当代码块中的代码可能有多个异常时,可以使用连起来的catch块。
如果同时存在父类和子类异常,必须把子类异常放在前面,如果子类异常已经能够处理,父类异常就不会再处理。

上面的方式看起来很冗余,如果是没有继承关系的异常,可以这么写:

如果编译时异常的数量实在太多,添加很麻烦,你可以用它们的父类直接代替,比如用Exception,能处理所有异常。

异常处理 finally

Java面向对象_27 异常
  • 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进行处理,非常感谢!

上一篇 2022年7月26日
下一篇 2022年7月26日

相关推荐