避免无法修改的类使用时避免instanceof的最佳设计模式?

我正在重写第三方库类提供的方法,并尝试记录发生的异常:


@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原则来处理此问题?


(另外,建议我查看访问者和非循环访问者的设计模式,但是我不确定它们是否可以应用于无法修改的类)


扬帆大鱼
浏览 173回答 2
2回答

波斯汪

没有根本解决此问题的方法(至少在Java中没有)。如果使用的是允许多调度的语言,则可以为不同的异常类型重载消息。我宁愿建议您简单地接受它。如果有的话,我会看到干净代码规则在这里有何帮助,例如,通过确保每个if块都进入不同的方法。嗯,有一种略有不同的方法:您可能会使用地图。键将是异常类,值将是包含需要分配的不同变量的值的东西。

慕神8447489

将异常抛出到try-catch块中并使用catch子句来标识异常是什么呢?
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java