java基础知识-异常

异常知识总结

一:异常分类

 所有异常都是由Throwable接口的一个实例。下一层分为Error和Exception两个。Error类层次结构描述了java运行时系统的内部错误和资源耗尽错误。更加关注的是Exception,这个层次又派生成两个分支:一个派生于RuntimeException和IOException.

  1. 非检查型异常:Error类和RuntimeException类的所有异常
  2. 检查型异常:提供异常处理器。

不应该声明Error继承的异常和RuntimeException继承的那些非检查型异常。

二:抛出异常

 在方法申明后throws EOFException
在方法中throw new EOFException
 备注:子类的throws不能出现父类没有的异常类,除非是异常子类。

三:创建异常类:

 主要记住 Throwable 中的无参数构造方法,和有参数的构造方法,还有String getMessage()的构造方法。

四:捕获异常:

一:使用try/catch语句块。
  特点:try语句块中会抛出catch子句中的一个异常类,程序将跳过try中剩余的代码。从而执行catch子句中的处理器代码。异常中有打印printStackTrace()方法,是生成一个堆栈轨迹。
当然,在catch中抛出异常而不进行处理也是可行的。
二:使用finally语句。
 不管有没有异常被捕获,finally中的语句都会被执行。
不过finally语句是用于清除资源,不要将return,throw,break,continue等控制流语句放在finally子句中。
三:使用try-with-resources语句:
 try(resource res=""){ work with res};
 当结束时会调用res.close()方法。close()方法如果产生了异常,此异常的优先级会低于try代码块中产生的异常。

五:分析堆栈轨迹元素

 stack trace.
 常见方法就是异常的printStackTrace方法。
 一种更灵活的方法是使用StackWalker类,它会生成StackWalker.StackFrame实例流。StackWalker walker=StackWalker.getInstance(); work.forEach(frame–>process);
或者walker.walk(steam ->procees stream);
总结:1,异常不能代替简单测试
2,不要过分细分异常
3,充分利用异常的层次结构。
4,不要压制异常。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值