对于一个项目,我一直在工作,我们有一些块看起来像这样的:用更具体的异常类型替换泛型异常?
A类:
try {
callSomeMethod();
}
catch (Exception e) {
throw new SomeCustomExceptionTypeForMetrics("");
}
然而,我与更换,我们赶上与一般例外的所有实例任务只有特定的“预期”类型的例外。
问题是callSomeMethod()有这样的事情
B类:
try {
if (someCondition...) {
}
else {
//failed
throw new RuntimeException("Timeout while waiting for results")
}
}
catch(InterruptedException e) {
// do some failure stuff here
throw new RuntimeException("Something here");
}
理想的情况下,我集团一直叫我改变,因为小越好,我不能改变callSomeMethod()的签名,但他们也不希望只捕获A类中的任何RuntimeException,因为他们不想仅捕获任何类型的RuntimeException - 仅限于B类除外。
处理此问题的最佳方法是什么?
将这些“RuntimeExeption”更改为更具体的内容。根据需要创建自定义类。 –
我理解这是否正确:你应该捕获RuntimeExceptions,但只有当他们明确地被抛出到Java代码中的类B中,抛出新的RuntimeException(),而忽略可能来自其他地方的那些呢? –
正在修改B类选项吗? – slambeth