在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”的异常。对于/这个特定的实现/,我希望能够自己处理这些,而不是去代码中调用这些方法的每一个点,然后以完全相同的方式处理它们。
答案 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可用的类的不同版本。