我正在重写第三方库类提供的方法,并尝试记录发生的异常:
@Override
someJavaMethod(arg1, arg2, Exception ex){
//Declare some variables with default values
if (ex instanceof SpecificException1)
//Set values for the variables
else if (ex instanceof SpecificException2)
//Set some other values for the variables
else
//Do nothing
}
这里的问题是SpecificException1
和SpecificException2
都是第三方例外,我无法对其进行修改。
我知道使用instanceof
并不是解决此问题的好方法。我应该使用哪种设计模式/ OO原则来处理这个问题?
(还建议我查看访问者和非循环访问者的设计模式,但是我不确定它们是否可以应用于无法修改的类)
答案 0 :(得分:2)
解决这个问题没有根本不同的方法(至少在Java中没有)。如果您使用允许多调度的语言,则可以为不同的异常类型重载消息。
我宁愿建议简单地接受它。如果可以的话,例如,通过确保每个if块进入不同的方法中,我将看到干净代码规则如何提供帮助。
嗯,有一种稍微不同的方法:您可能会使用地图。键将是异常类,值将是 something ,其中包含需要分配的不同变量的值。
答案 1 :(得分:1)
将异常扔到try-catch块中并使用catch子句来标识异常是什么?