我有一个异常'OrekitException',我想包装到我自己的Exception类中。
我怎么能这样做?
例如在我的一个方法中:
private void configureOrekit() throws OrekitException{
try {
method logic...
} catch (OrekitException oe) {
System.out.println(OrekitException oe);
log.error(oe.getMessage());
}
我自己的Exception类:
public class MyException extends Exception {
public MyException ( String message )
{
super( message );
}
}
我怎样才能在MyException中加入OrekitException,所以每当抛出它时,它都不在MyException类中?
提供一个也接受异常包装的构造函数:
public class MyException extends Exception {
public MyException (String message, OrekitException exception){
super(message, exception);
}
}
或者包装任何异常使用更宽泛的类型作为参数:
public MyException (String message, Exception exception){
super(message, exception);
}
你可以用它作为:
private void configureOrekit() throws MyException{
try {
method logic...
} catch (OrekitException oe) {
throw new MyException("message useful...", oe);
}
请注意,System.out.println()
不是一种跟踪异常的方法,并且记录异常,然后将其包装在另外的异常中,因为您仍然可以在任何层上记录异常,这会让事情变得不明确日志文件中的重复错误日志...通常,记录或抛出/传播异常:不是两者都有。
例外允许您指定cause
。您可以在构造函数中获取原因,并将其传递给Exception
的构造函数:
public class MyException extends Exception {
public MyException (String message, Exception cause){
super(message, cause);
}
}
然后你的方法可以抛出MyException
:
private void configureOrekit() throws MyException{
try {
method logic...
} catch (OrekitException oe) {
System.out.println(OrekitException oe);
log.error(oe.getMessage());
throw new MyException("", oe);
}
}
这允许你的MyException
对象的堆栈跟踪有caused by...
显示原始OrekitException
的详细信息/跟踪