目录
1.异常分类
Exception和Error都是继承了Throwable类
Exception是程序正常运行中,可以预料的意外情况,可以捕获进行相应的处理。
Error是正常情况下,不大可能出现的情况,导致程序中断,不需要捕获。如OOM溢出
Exception又可以分为:检查时异常和非检查时异常,检查时异常,必须显示的捕获,非检查时异常,就是所谓的运行时异常(空指针异常,类转换异常等等),通常可以通过编码的方式去解决逻辑错误问题
2.使用异常的注意点
1.永远不要catch中吞掉异常,否则在系统发生错误时,你永远不知道到底发生了什么
2.尽量使用特定的异常而不是一律使用Exception这样太泛泛的异常,可能会误吞异常
3.不要使用printStackTrace 使用日志输出更好
4.错误发生时,应该及早抛出,然后在获得所有全部信息时,再捕获处理。也可以理解为在低层次抛出的异常,在足够高的抽象层面才能更好的理解异常,然后捕获处理。
5.对于使用一些重量级资源的操作,发生异常的时候。一定要记得清理try-catch-finaly
3.异常性能分析
异常实例的构造是十分昂贵的,会增加性能的消耗
1.尽量少使用异常。使用if/else代替
2.减小try-catch的代码块大小
4.常见面试题
1.throw和throws的区别?
throw是语句报错一个异常,一般在代码块的内部,当程序出现某种逻辑错误的时候,由程序员主动抛出的异常
throws是方法可能抛出异常的声明,当一个方法可能会抛出某种异常时,然后交给上层调用这个方法的程序处理