抛出异常需要构建异常栈,对异常进行捕获和处理,这个过程比较消耗系统的性能,怎么理解?
创建异常对象时会调用父类Throwable的fillInStackTrace()方法生成栈追踪信息,也就是调用native的fillInStackTrace()方法去爬取线程堆栈信息,为运行时栈做一份快照,正是这一部分开销很大
如何实现自定义异常?
继承RuntimeException,然后将writableStackTrace设置为false。
以下是RuntimeException的构造函数:
protected RuntimeException(String message, Throwable cause,
boolean enableSuppression,
boolean writableStackTrace) {
super(message, cause, enableSuppression, writableStackTrace);
}