为了账号安全,请及时绑定邮箱和手机立即绑定

异常包装可能吗?

异常包装可能吗?

Qyouu 2021-09-12 20:28:40
我有一个异常“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 类之外?
查看完整描述

2 回答

?
HUWWW

TA贡献1874条经验 获得超12个赞

提供一个也接受 wrap 异常的构造函数:


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()不是跟踪异常的方式和记录异常和然后把它包在另一个不同的是你扔也不好,你仍然可以记录它在任何一层,它将使所有的事情并不清楚找到一些重复错误记录在日志文件中...一般来说,记录或抛出/传播异常:不能同时进行。


查看完整回答
反对 回复 2021-09-12
?
婷婷同学_

TA贡献1844条经验 获得超8个赞

例外允许您指定一个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


查看完整回答
反对 回复 2021-09-12
  • 2 回答
  • 0 关注
  • 132 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信