我有一个异常'OrekitException',我想将其包装到我自己的Exception类中。
我该怎么办?
例如在我的一种方法中:
private void configureOrekit() throws OrekitException{
try {
method logic...
} catch (OrekitException oe) {
System.out.println(OrekitException oe);
log.error(oe.getMessage());
}
我自己的异常类:
public class MyException extends Exception {
public MyException ( String message )
{
super( message );
}
}
如何将OrekitException合并到MyException中,以便无论何时抛出它,都超出MyException类的范围?
答案 0 :(得分:1)
提供一个构造函数,该构造函数也接受要包装的异常:
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()
并不是跟踪异常的一种方法,并且记录异常 ,然后将其包装在另一个抛出的异常中,因为您仍然可以将其记录在任何层,在日志文件中找到一些重复的错误日志都会使事情变得一目了然...
通常,记录或抛出/传播异常:不能同时记录和抛出异常。
答案 1 :(得分:0)
例外允许您指定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
的详细信息/跟踪