从类中的多种方法中捕获异常

时间:2011-10-09 02:42:14

标签: java exception exception-handling try-catch throws

在Java中,我有一个类,其中有几个方法抛出相同的自定义异常(自定义异常扩展了'Exception'类):

private void setAColor(float r, float g, float b, float a) throws AnException {}
private void setBColor(float r, float g, float b, float a) throws AnException {}
private void setCColor(float r, float g, float b, float a) throws AnException {}

我希望能够捕获它们并在类中处理它们,而不是让用户处理这些异常。每个方法异常都将以完全相同的方式捕获。我不想在每个方法中都使用完全相同的try / catch方法块。有没有办法可以在方法体外捕获这些异常,但是在类的内部?

感谢您的时间,即使您无法帮助我。

附上更多信息:
可以调用这些方法直到某个点:在调用将变量“isImmutable”设置为true的方法之后,这些方法应该不再能够更改有关该对象的任何内容。因此,如果在“isImmutable”设置为true之后调用其中一个方法,则它们应该抛出一个名为“ImmutableException”的异常。对于/这个特定的实现/,我希望能够自己处理这些,而不是去代码中调用这些方法的每一个点,然后以完全相同的方式处理它们。

3 个答案:

答案 0 :(得分:1)

我不想在每个方法中都使用完全相同的try / catch方法块。

然后不要抛出异常。

有没有办法可以在方法体外捕获这些异常,但是在类内部?

没有

对于/这个特定的实现/,我希望能够自己处理这些,而不是去代码中调用这些方法的每一个点,然后以完全相同的方式处理它们。 < / p>

这没有任何意义。如果检测到错误,您打算如何报告?

在调用将变量“isImmutable”设置为true的方法之后,这些方法应该不再能够更改有关该对象的任何内容。因此,如果在“isImmutable”设置为true之后调用其中一个方法,那么它们应该抛出一个名为“ImmutableException”的异常。

您是否考虑过将您的异常作为RuntimeException的子类?然后调用者不需要声明异常处理程序 - 如果没有处理程序,程序将因“未处理的异常”而终止。

答案 1 :(得分:1)

您可以将上述方法转换为调用

的存根方法
setColorDelagator(char abc, ...)

代表

setColorAWithErrorHandling
setColorBWithErrorHandling
setColorCWithErrorHandling 

在try / catch中。

我同意这不是最佳选择,但我不确定更好的方法。

答案 2 :(得分:0)

要从另一个角度接近它,您是否考虑过切换到工厂模式?如果没有调用将isImmutable设置为true,请调用以获取isImmutable为true的实例...并且该方法返回不具有setter可用的类的不同版本。