如何在一个地方获取Java应用程序中的所有异常(包含多个类和包)? 示例:创建一个类,获取其他应用程序类的所有异常
答案 0 :(得分:3)
正如其他已经指出的那样,一个选项是将您的主要方法放在try-catch
块
public static void main( String[] args ){
try{
//regular main code
} catch (Throwable e){
//do exception handling
}
}
另一种可能性是使用Thread#setDefaultUncaughtExceptionHandler
方法在Thread
上设置默认的uncaughtExceptionHandler。
请注意,如果两个解决方案都没有被应用程序中的其他位置捕获,那么这两个解决方案只允许您“在一个地方处理所有异常”
答案 1 :(得分:1)
为什么不简单地使用具有2个功能的课程ExceptionHandler
void handleException(Exception e);
void handleThrowable(Throwable t);
并且每try{}catch(Exception e){}
只使用ExceptionHandler.handleException(e);
要了解抛出的异常,请使用instanceof
例如。
if(e instanceof NullPointerException)
{
//whatver
}
答案 2 :(得分:0)
在您的主要课程中,您可能会遇到以下情况:
try { } catch (Exception ex) { }
在其他课程中,您应抛出例外情况,例如:
public void example() throws Exception { }
如果你抛出其他类的例外,你可以只在主类中处理它们。
答案 3 :(得分:0)
类Exception及其子类是Throwable的一种形式,表示合理的应用程序可能想要捕获的条件。
如果所有方法都向主调用方法抛出异常,那么您可以捕获所有异常。
异常类的层次结构从Throwable类开始,Throwable类是整个异常类系列的基类,在java.lang package
中声明为java.lang.Throwable
。
答案 4 :(得分:0)
您可以使用:
尝试{
// block of code ...
} catch(例外e){
// Do something with e
}