转载

Exception和Error的区别-《Java核心技术》笔记

Exception是程序正常运行时可以预料到并且应该被捕获的情况,Error是指在正常情况下不太可能出现的情况。绝大部分Error都会导致程序处于非正常、不可恢复的情况,所以不便于也不应该被捕获,比如OutofMemoryError。Exception分为checked和unchecked,checked在代码里必须显式捕获,比如IOException,而unchecked是不可查异常,比如NullPointerException、ArrayIndexOutOfBoundException,通常是可以编码避免的逻辑错误。

Exception和Error的区别-《Java核心技术》笔记

抛异常的最佳实践:throw early,catch late。

try-catch会产生额外的性能开销,建议仅捕获有必要的代码段,不要一个大的try包住整段代码。

java每实例化一个Exception都会进行栈快照,有种优化方式是尝试创建不进行栈快照的Exception。

NoClassDefFoundError和ClassNotFoundException的区别:

  • java在使用反射机制加载类(例如Class.forName)的时候,将类名作为参数传递给上诉方法从而将指定类加载到JVM中,如果这个类在路径中没找到,则会在运行时抛ClassNotFoundException;
  • 如果JVM或ClassLoader实例尝试加载类的时候找不到类定义,要查找的类在编译时存在,但在运行时不存在,则会抛NoClassDefFoundError,可能的原因是jar包损伤或被篡改。
原文  http://yizhanggou.top/exceptionhe-errorde-qu-bie/
正文到此结束
Loading...