java - 异常包装可能吗?

标签 java exception

我有一个异常“OrekitException”,我想将其包装到我自己的异常类中。

我该如何解决这个问题?

例如在我的方法之一中:

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 类之外?

最佳答案

提供一个也接受异常的构造函数来包装:

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() 不是跟踪异常的方法,记录异常然后将其包装在您抛出的另一个异常中是不好,因为您仍然可以在任何层记录它,在日志文件中找到一些重复的错误日志会使事情变得不清楚...... 一般来说,要么记录异常,要么抛出/传播异常:不能同时记录和传播异常。

关于java - 异常包装可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52274052/

相关文章:

java - 如何在java7中处理异常 "javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure"

python - 在 python 中使用 smtplib 时出错

.net - 堆栈跟踪跳过函数

android - 权限拒绝 : reading com. android.providers.contacts.CallLogProvider

java - Java 中的异常处理

java - 在 Google App Engine 上从 Java 7 迁移到 Java 8 时出现内存错误/500 错误

java - Checker Framework 可以与 Error Prone 一起使用吗?

java - 有没有办法将Antlr包含在Java编译过程中?

java - 如何清除散列映射<string,string> 值?

java - java中数组的反射