【问题标题】:Java Method Signature Throws Exception, Implementation does not [closed]Java方法签名抛出异常,实现不[关闭]
【发布时间】:2013-05-02 22:30:00
【问题描述】:

我正在调查一种方法抛出的一些异常。该方法如下所示:

public void someMethod() throws someCheckedException{

  //doSomething statements
  //but no statements actually throws 'someCheckedException'

}

我的问题是,是否有可能在实现根本没有 throw 语句的情况下让这个方法抛出“someCheckedException”。

在没有实现抛出异常的语句的情况下将抛出异常放在签名中是错误的吗?

【问题讨论】:

  • 这样做是合法的。 “对”或“错”是主观的。
  • 不,没有错,但是为什么你添加 throws 子句而不需要使用它?
  • @AzadOmer 这有很多场合。 RMI 就是一个例子。

标签: java exception exception-handling method-signature


【解决方案1】:

这完全没问题。方法签名中的 throw 语句是为了防止方法抛出 throws 语句中声明的实际异常,并且通常将处理传递给不同的类 你只需要记住,当你想使用它时,把这个方法放到 try catch 语句中。

【讨论】:

    【解决方案2】:

    异常可能是由 someMethod 调用的方法之一引发的。

    例如

        void method1() throws Exception {
            method2();
        }
    
        void method2() {
            throw new Exception();
        }
    

    【讨论】:

      【解决方案3】:

      这是合法的。这在 RMI 中很常见。远程接口中的方法必须声明为抛出 RemoteException,但实现方法不需要声明它,因为它们实际上并不自己抛出它(除非它们自己进行 RMI 调用)。远程异常由 RMI 本身引发。然而,他们经常被声明这样做只是为了同意远程接口。没必要。

      【讨论】:

        猜你喜欢
        • 2013-03-14
        • 2012-08-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多