6

我有一个有方法的类。该方法可能会失败,我想抛出异常。在函数抛出异常的类的命名空间中定义异常类是否不好?我还没有看到很多这样的例子,但它似乎是“正确”(即OO)的方式来做到这一点?我是否有理由避免这种模式并在自己的文件中定义每个自定义异常?

public class Foo
{
    void bar() {
        // do something and throw BarException if something bad happens
    }

    public static class BarException extends Exception {
        // rest of class definition
    }
}
4

2 回答 2

8

我认为这取决于Exception您正在创建的可能范围。如果它只与Foo,并且只有Foo,永远有关,那么将其创建为嵌套类会很好。

只要确保打电话Bar说的事情是有意义的:

catch (Foo.BarException e)

代替

catch (BarException e)

否则,将其创建为自己的独立类。

至于命名空间,Java 类用于命名空间类,但通常在 Java 包中用于命名您的类。如果主类和其他类之间的耦合度很高,我只会使用嵌套类。

于 2013-10-11T20:25:22.583 回答
4

我不会使用这种模式。

  • 您在课堂上添加更多行。
  • 这门课有不止一个问题
  • 如果你想在另一个类中使用相同的异常,你会遇到问题。

你为什么要这样做?只是,因为你不想创建一个新文件?;)

在 Java 中,您应该只在一个文件中添加一个公共类。有时我将公共接口添加到类中,大多数用于事件处理。

class MyEvent {
    public void registerHandler(MyEvent.Handler h){
        //
    }
    public interface Handler(){
        handle();
    }

}

在这种情况下,我绝对可以肯定,不会有任何其他类使用这个接口。

于 2013-10-11T20:27:04.387 回答