java的异常处理机制要点总结

 
 一,异常类的继承层次结构
 所有的异常都是由Throwable继承而来,在下一层立即被分解被两个分支:Error和Exception
 Error类层次结构描述了Java运行时系统的内部错误和资源耗尽错误,应用程序不能抛出这种类型的对象。如果出现了这样的内部错误,除了通知给用户,并尽力使程序安全地终止之外,再也无能为力了。
 Exception层次结构是我们应该重点关注的类,
 异常的继承结构
 
 1.try-catch捕获异常类型的顺序:
 由子类到父类的顺序,不能错。
 在最后一个catch语句中捕获Exception异常,父类异常在子类的下面,顺序不能错,否则子类异常没有机会被处理。
异常处理方式:
 2.try-catch捕获异常和throw抛出异常的区别:
 (1)try-catch 捕获,异常由被调用者自己处理。
 (2)throw抛出异常,异常由调用者处理,谁调用谁处理, 用throw通知外界,告知方式就是throw异常,用于catch语句块中
 注意:父亲坏了,儿子不能再坏
 原则:参数原因异常应该抛出,自身原因由自己处理
 throws关键字:
 声明方法的同时声明可能抛出的异常类型,通知调用者强制捕获。
Throw和throws应该结合使用:
 Throws可以在方法声明时声明抛出的异常。原则上throws声明的异常,一定要在该方法中抛出。否则没有意义。相反的,若方法中我们主动通过throw抛出一个异常,应该在throws中声明该种类异常,通过外界捕获。
  Java异常分为:
  (1)运行时异常
 (2)可检查异常
RuntimeException:
 若方法中抛出该类异常或其子类,那么声明方法时可以不在throws中列举该类抛出的异常。不是RuntimeException类型的异常必须列举该类抛出的异常。
 NullPointerException/IndexOutOfBoundsException
抛出非RuntimeException异常,这类异常称为检查异常
编辑器在编译该类时若发现方法中抛出了此类异常。那么一定会检查方法声明是否含有throws这类异常的声明,若没有就判定为语法错误,编译不通过。
非RuntimeException—->必须检查
Main方法不抛出异常,因为mian方法后的Throws异常会交给JVM处理,而JVM会直接关闭程序。
Throws和Throw的区别(笔试常考)
 (1)throw是语句抛出一个异常。
语法:throw (异常对象);
throw e;
 (1)throws是方法可能抛出异常的声明。(用在声明方法时,表示该方法可能要抛出异常)
语法:(修饰符)(方法名)([参数列表])[throws(异常类)]{……}
public void doA(int a) throws Exception1,Exception3{……}
Java的异常处理机制:
 Jvm在运行程序时,一旦在某行代码运行时出现了错误,jvm会创建这个错误的实例,并抛出。这时jvm会检查出错代码所在的方法块中是否有try捕获,若有,则检查catch块是否有可以处理该异常的能力。若没有,则将该异常抛出给方法的调用者。以此类推,(自动向上抛出???)直到抛至main方法仍没有解决。那么jvm会终止该程序。
 重写方法时的异常处理:
如果使用继承时,在父类的某个方法上宣告了throws某些异常,而在子类中重新定义该方法时,可以:
 (1)不处理异常,重新定义时不设定throws
 (2)可仅throws父类中被重新定义的额方法上的某些异常
 (3)可throws被重新定义的方法之上的异常的子类别
不可以:
 (1)throws出额外的异常
 (2)throws被重新定义的方法之上的异常之父类
Throwable类
程序产生的异常是Throwable类 或其子类的实例对象
Throwable有两种子类: Error类和Exception类
Exception子类:
 (1)ArithmeticException:数学运算时产生的异常
 (2)ArrayIndexOutBoundException:数组索引值小于0或者数组边界产生的异常
(3)ArrayStoreException:保存数组元素的类型不符合
(4)IllegalArgumentException:方法调用时,参数类型不同
(5)NullPointException:对象值为空

Try…catch…finally与直接throw的区别:
(1)try catch是直接处理,处理完成之后程序继续往下执行,
(2)throw则是将异常抛给它的上一级处理,程序便不往下执行了。不会再继续执行finally中的字句。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TechMix

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值