有没有try catch(Exception)捕获不到的异常?

原创
02/19 22:16
阅读数 871

最近遇到一个生产问题,方法里明明有try catch,但是却运行到某一行突然中断,且没有进入catch,也没有打印异常日志,这种情况怎么处理呢?

其实我们通常用到try catch时只会在catch里写Exception或者Exception的子类,但是java虚拟机或者第三方的jar包以及spring的包里,经常会抛出Throwable,这是因为Throwable是最顶级的异常,我们遇到的大部分异常都是他的子类Exception的延伸而来的,所以如果我们有异常却没有进catch,那么此时就应该加一个catch来捕获Throwable,或者直接把Exception改为Throwable,建议采用前者;这是我们就肯定能捕获到任何异常了包括error,比如所有的error都是继承的Throwable,并且有些方法也是声明了Throwable,比如aspectjproceed方法;所以当我们需要用到这些方法或者捕获这些error时就需要用到catch(Throwable t)。

public class Error extends Throwable {...}


public interface ProceedingJoinPoint extends JoinPoint {
    void set$AroundClosure(AroundClosure var1);

    Object proceed() throws Throwable;

    Object proceed(Object[] var1) throws Throwable;
}


try {
	pjp.proceed();
}catch (Throwable t){
	logger.error(t);
	throw t;
}
展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部