Java 在方法中定义的本地类是否应该作为异常抛出?
可以将函数本地类作为异常抛出。这是好是坏 我的意图是解释异常类类型上的异常上下文Java 在方法中定义的本地类是否应该作为异常抛出?,java,exception,exception-handling,Java,Exception,Exception Handling,可以将函数本地类作为异常抛出。这是好是坏 我的意图是解释异常类类型上的异常上下文 class A { void method1() throws IOException { class Method1IOException extends IOException { } throw new Method1IOException(); } void method2() throws IOException{
class A {
void method1() throws IOException {
class Method1IOException extends IOException {
}
throw new Method1IOException();
}
void method2() throws IOException{
class Method2IOException extends IOException{
}
throw new Method2IOException();
}
}
假设
extends
是方法声明中throws
的输入错误
您不能在该范围内抛出一个异常
未知,它将是您的方法的本地范围(在本例中,与类A
的实例相比)
因此,您的本地异常
s extend运行时异常
,或者您的throws
子句必须抛出常规异常
(或者Throwable
)
无论如何,我不推荐这种做法,除非您从未重新使用本地异常
——即使这样
上下文应该在消息中以编程方式表示,并在堆栈跟踪中自动表示,但在这种情况下,它只会给堆栈跟踪添加一些噪声 你为什么不自己试试呢?我完全不明白你的意思。如果你想扔东西,它必须延伸。方法不是对象,因此不能抛出它们,如果这是您要问的。@Turing85:看看代码-OP是在方法中声明异常类,并声明该方法可以抛出该异常。这一切都很好。@JonSkeet啊,好吧,在再次阅读标题后,我明白了。标题有点让人困惑。如果调用方能够捕捉到您的特定类型的异常,从而区分您的方法具有预期类型的IOException的场景和出现意外类型的IOException的场景,那么这种方法可能会很有用;不过,要想让它起作用,我认为您的例外类型需要是公开的,不是吗?我还建议,尽管嵌套异常类型可能有意义,但它们应该是
静态的。否则,异常类型将包含对其方法引发异常的对象的隐藏引用;如果这个参考是有用的,这是一件不错的事情,但如果它不是,那就值得怀疑。