异常,断言和日志(一)

错误发生之后应该怎么办:

•向用户通告错误;

•保存所有的工作结果;

•允许用户以妥善的形式退出程序。 

Java中所有异常都是派生于类Throwable的一个实例:

各种异常分类的标准:

RuntimeException相当于逻辑错误

关于受查异常和非受查异常:

方法后的声明:

 

如果在子类中覆盖了超类的一个方法, 子类方法中声明的受查异常不能比超类方 法中声明的异常更通用(也就是说, 子类方法中可以抛出更特定的异常, 或者根本不抛 出任何异常)。 特别需要说明的是, 如果超类方法没有抛出任何受查异常, 子类也不能抛 出任何受查异常。

而在 Java 中, 没有 throws 说明符的方法将不能抛出任何受查异常。

捕获异常

合并catch语句:

将原始异常设置为新异常的原因:

 

finally多用于资源管理,确保无论在任何情况下,代码都能得到执行

try 语句可以只有 finally 子句, 而没有 catch 子句。 

异常如果没有catch住,会继续抛出。与finally无关

 

关于解耦:

当finally语句包含return的时候的执行效果:

 

带资源的try语句

不管是正常退出还是存在异常,都会调用close方法

也可以指定多个资源:

带资源的 try 语句自身也可以有 catch 子句和一个 finally 子句。

这些子句会在 关闭资源之后执行。 不过在实际中, 一个 try语句中加入这么多内容可能不是一个好 主 意。 

 

分析堆栈轨迹元素

全部打印出来:
 

分析这个数组:

获得所有线程的运行轨迹:

 

 

 

 

 

 

 
posted @ 2018-12-20 20:18  geeklove  阅读(424)  评论(0编辑  收藏  举报