java_异常机制(二)

1.异常对象处理完之后会怎样:

异常处理对象在异常处理完后,没有引用指向它,变成了不可达对象,Exception对象会在下一个垃圾回收过程中被回收掉。

它将在接下来JVM进行gc操作时被标记为"不可达",如果该Exception实例实现了finalize方法,那么就会安排到F-queue队列中等待执行finalize方法。

(但是由于F-queue所在线程的优先级很低,所以可能一直得不到执行,而长时间留在该队列中)下一次执行gc时,

如果Exception对象已经执行完成finalize方法,它将被回收(彻底抹去内存中的数据)。

2.finalize()方法:

finalize是Object类的一个方法,该方法在Object类中声明:

protected void finalize() throws Throwable { }

finalize()方法是Object的方法,用于标记该对象可以被JVM垃圾回收器回收。

注意:一旦垃圾回收器准备释放某个对象占用的空间,将首先调用该对象的finalize()方法,

并且在下一次垃圾回收动作发生时,才真正将该对象占用的内存回收。

3.如何自定义异常:

在程序中使用自定义异常类,大体可分为以下几个步骤:

 (1)创建自定义异常类。

 (2)在方法中通过throw关键字抛出异常对象。

 (3)如果在当前抛出异常的方法中处理异常,可以使用try-catch语句捕获并处理;否则在方法的声明处通过throws关键字指明要抛出给方法调用者的异常,继续进行下一步操作。

 (4)在出现异常方法的调用者中捕获并处理异常。

创建自定义异常需要做到以下四点:

 (1)类名要见名知意,

 (2)需要继承自Exception,

 (3)定义Exception中定义的各种构造方法,

 (4)提供序列化版本号,因为Exception实现了序列化接口。

  

posted @ 2022-04-08 10:15  2022年总冠军gogogo  阅读(45)  评论(0)    收藏  举报