第十八章 Java中的异常体系

Java中的异常体系是怎样的

1   Java中的所有异常都来自顶级父类Throwable。

2  Throwable下有两个子类Exception和Error。

3   Error表示非常严重的错误,比如java.lang.StackOverFlowError和Java.lang.OutOfMemoryError,通常这些错误出现时,仅仅想靠程序自己是解决不了的,可能是虚拟机、磁盘、操作系统层面出现的问题了,所以通常也不建议在代码中去捕获这些Error,因为捕获的意义不大,因为程序可能已经根本运行不了了。

4   Exception表示异常,表示程序出现Exception时,是可以靠程序自己来解决的,比如NullPointerException、llegalAccessException等,我们可以捕获这些异常来做特殊处理。

5   Exception的子类通常又可以分为RuntimeException和非RuntimeException两类

6   RunTimeException表示运行期异常,表示这个异常是在代码运行过程中抛出的,这些异常是非检查异常,程序中可以选择捕获处理,也可以不处理。这些异常一般是由程序逻辑错误引起的,程序应该从逻辑角度尽可能避免这类异常的发生,比如NullPointerException、IndexOutOfBoundsException等。

7   非RuntimeException表示非运行期异常,也就是我们常说的检查异常,是必须进行处理的异常,如果不处理,程序就不能检查异常通过。如IOException、SQLException等以及用户自定义的Exception异常。

f8ae574d34f84200b0be5b87f7a62e5e.jpg

 在Java的异常处理机制中,什么时候应该抛出异常,什么时候捕获异常?

1   异常相当于一种提示,如果我们抛出异常,就相当于告诉上层方法,我抛了一个异常,我处理不了这个异常,交给你来处理,而对于上层方法来说,它也需要决定自己能不能处理这个异常,是否也需要交给它的上层。

2   所以我们在写一个方法时,我们需要考虑的就是,本方法能否合理的处理该异常,如果处理不了就继续向上抛出异常,包括本方法中在调用另外一个方法时,发现出现了异常,如果这个异常应该由自己来处理,那就捕获该异常并进行处理。

38c30bb9730840c9bf978a67de19fafe.jpg

为什么要使用自定义异常?


在平常处理业务逻辑时,已知的异常类已经不满足不了我们的需求,我们就可以自定义异常。
怎么自定义:
所有异常都必须是Throwable 的子类。 如果希望写一个检查性异常类,则需要继承Exception类。 如果我们想写一个运行时异常类,那么需要继承 RuntimeException类。

 

 

另外注意:

 

子类继承父类抛出的异常不能比父类范围更广。

Throwable中的成员方法:
public String getMessage():返回此 throwable 的详细消息字符串。
public String toString():获取异常类名和异常信息。
public void printStackTrace():获取异常类名和异常信息,以及异常出现在程序中的位置。
public void printStackTrace(PrintStream s):通常用该方法将异常内容保存在日志文件中,以便查阅。

 

catch不能独立存在 ,必须依赖于try;catch可以有多个;finally在最后面可写可不写,如果写了finally方法块一定会执行。 总结: try 必须存在,后可接finally,catch,或者三个都有

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值