1.两者都继承了Throwable类,

2.Exception 是程序运行中,可以预料的问题,Error则是正常情况无法预料,或者不太可能出现的问题

3.Exception可以分为可检查 不检查异常的

图片

常见的Exception和Error的区别有

NoClassDefFoundError 是指的在程序编译的时候有对应的Class文件,执行的时候却没有

ClassNotFoundException 则是在加载对应的类的时候找不到类

例如 Class的forname ClassLoader中的findSystemClass方法 ClassLoader中的loadClass方法

还有就是伴随着Java的发展

异常相关的机制也蓬勃发展

try-with-resource和 multiple catch

还有一些常见的不恰当的异常捕获

图片

上面的代码之中,说明不要捕获Excpetion这种通用异常,最好捕获特定的异常

而且不要捕获 Throwable或者Error

图片

不要生吞异常,这样直接输出,因为不知道输出到哪里去,所以最好不要直接生吞了

图片

Try-Catch要尽可能的简介,要捕获到具体的位置

最后在设定异常的时候,我们需要考虑

是否需要定义为Checked Exception,是否有充足的信息进行fen,lei

而且不要在信息中包含潜在的安全隐患,比如用户数据

而且从性能角度来说,使用try-catch也不是和最优解决

try-catch有额外的性能开销,可能影响JVM的优化

而且由于一个Exception会对整个栈进行快照,是一个相对比较重的操作

发表评论

邮箱地址不会被公开。 必填项已用*标注