Java中的异常

 一、Java异常的分类

 上图中我列出了Java中的异常类型以及部分常见的异常,在Java中Throwable接口是异常的顶级父接口,Throwable接口有两大子接口,分别是Error和Exception。

二、Error和Exception的区别

在Java编程语言中,Error和Exception都属于Throwable,但它们在使用和处理上有一些区别。

        Error:Error表示严重的问题,通常是由于系统级错误、虚拟机(JVM)问题或其他无法恢复的情况引起的。例如,OutOfMemoryError表示内存耗尽,StackOverflowError表示堆栈溢出等。Error一般无法通过程序代码进行捕获或处理,因为它们通常表示系统不可恢复的错误,而且在发生时往往会导致程序终止。

        Exception:Exception表示在程序执行期间发生的可预见的异常情况。它分为两种类型:检查型异常(Exception)和运行时异常(Runtime Exception)。

  • 检查型异常:这些异常在代码中必须显式地进行捕获和处理,否则编译器会报错。检查型异常一般表示某种外部条件或操作错误,需要程序进行相应的处理或恢复。例如,IOException、SQLException等。开发人员必须在代码中使用try-catch块或者在方法签名中使用throws关键字声明可能抛出的受检查异常。

  • 运行时异常(Runtime Exception):这些异常通常是由于程序错误或逻辑错误引起的,但在编译时不要求显式地捕获或处理。运行时异常是一种非检查型异常,它们的发生不是强制性错误,而是由于程序中的错误逻辑或其他问题导致的。例如,NullPointerException、IllegalArgumentException等。虽然对于运行时异常捕获并不是强制性的,但代码编写者还是应该对可能引发的运行时异常做出相应的处理。

        总结来说,Error表示系统级错误或虚拟机问题,通常无法通过代码进行捕获和处理,而Exception则表示程序执行期间可能遇到的可预见异常情况,需要进行捕获和处理。Exception又分为检查型异常和运行时异常两种类型,其中检查型异常需要在代码中显式处理,而运行时异常可以选择捕获处理,但通常建议在代码中对可能引发的运行时异常进行适当处理。

三、异常的处理方法

  1. 捕获处理(try-catch):使用 try-catch 块来捕获和处理异常。在 try 块中编写可能引发异常的代码,然后使用 catch 块捕获并处理异常。catch 块中可以指定特定的异常类型,也可以使用通用的 Exception 类来捕获所有类型的异常。捕获到异常后,可以执行相应的处理逻辑,如输出错误信息、进行日志记录、进行恢复操作等。

  2. 抛出(throws):在方法声明中使用 throws 关键字将异常抛出给调用者。该方式适用于方法内部无法处理异常或者将异常交给上层处理的情况。在方法声明中指定可能抛出的异常类型(可以是具体异常类或其父类),调用该方法时,调用者需要使用 try-catch 块或继续向上层方法抛出异常。

  3. finally 块:finally 块用于定义无论是否发生异常都要执行的代码。无论异常是否被捕获和处理,finally 块中的代码都会执行。通常在 finally 块中释放资源、关闭连接等需要确保执行的操作。

  4. 使用 try-with-resources:对于实现了 AutoCloseable 接口的资源,可以使用 try-with-resources 语句来自动关闭资源。在 try-with-resources 块中声明和初始化资源,当 try 块执行完毕时,会自动调用资源的 close() 方法来关闭资源,无需手动关闭。

  5. 自定义异常处理:根据具体需求,可以自定义异常类,并根据业务逻辑编写相应的异常处理逻辑。通过抛出自定义异常,可以在程序中标识和处理特定的异常情况。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值