java - 抛出异常形式覆盖方法,没有在组织方法接口(interface)上定义的异常

标签 java exception eclipse-emf

我正在从 org.eclipse.emf.transaction.RecordingCommand 扩展 RecordingCommand 类;我需要覆盖 protected 方法 doExecute(),方法定义不包含任何要抛出的异常,但在我的代码中有一个选项,我有异常,我想捕获它并引发它,我应该如何处理这种异常,在这里我抛出消息 e 但我不确定这是正确的方法。

我希望你能理解这个问题,因为我认为只抛出 E 更复杂

即抛出异常

@Override 
protected void doExecute() {
    try { 
        //my logic
   } catch(Exception e) {
        throw e;
   }
}

最佳答案

您始终可以从方法中抛出 UncheckedException,而无需在 throws 子句中声明。

因此,您将异常包装在任何未经检查的异常中,例如扩展 RuntimeException甚至 RuntimeException 本身。

try {
    //my logic
} catch(Exception e) {
     throw new RuntimeException(e);
}

为了完整起见,为Exception 设置一个catch block 并不是一个好主意,它将捕获所有异常。相反,您应该为您的方法可能抛出的特定类型的异常设置 catch block 。

关于java - 抛出异常形式覆盖方法,没有在组织方法接口(interface)上定义的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14870288/

相关文章:

c# - 捕获所有异常以进行详细记录 - 优点和缺点

c# - 为什么我会得到带有 BackgroundWorker.ReportProgress 的 TargetInvocationException?

java - 为什么要使用 EMF?

java - 检查文本文件中的 10 个数字是递增、递减、恒定还是递增和递减

java - 如何在匿名类中访问变量?

python - 捕获由 ftplib 中的连接错误引起的异常

java - 如何创建数据类型不是 EMF 类的 EAttribute?

java - 如何将 EMF 模型保存到文件夹和文件的层次结构中

java - 在java中比较单词中的单词

Java Protocol Buffer - 反射