[英]This is about the Exception Handling and the Exception Matching Concept in Java
[英]Java Exception Handling Concept
如果我不得不为调用另一个处理异常的类的类处理和测试异常,我会感到困惑。
这是我的课程的基本说明:
类A->具有一个方法,并调用引发异常的方法。 使用try和catch处理异常
类B->从类A调用该方法。由于该异常是在类A中处理的,因此它现在不会引发任何异常。
我想知道是否必须添加引发并显示B类中引发了异常吗? 另外,是否必须对B类中调用的方法引发异常进行单元测试? 当我尝试这样做时,测试用例失败了。
这是处理异常的类A:
public String getFooData(Foo foo, String foo1, String foo2) {
String foodata = "";
try {
FooRequest request = foo.setFoo1(foo1).setFoo2(foo2).buildQueryMessage();
foodata = request.getFooData();
} catch (SystemException e) {
errorReporter.report(".SystemException", e);
}
}
这是我的B类:
public String getFoo(String foo2) {
RequestBuilder requestBuilder = Request.Provider(ProviderType.foo);
String foodata = instanceOfA.getFooData(foo, foo1, foo2);
return foodata;
}
我想知道是否必须添加引发并显示B类中引发了异常吗?
如果您的意思是:
public String getfoo(String foo2) throws SystemException { ... }
那么答案是否定的。 您不必声明该方法抛出SystemException
,因为它不会。 它在Class A
引发/处理,并且不会传播到Class B
。 但是,如果您没有处理Class A
的异常,则如果它是Checked Exception
则必须在Class A
的方法签名中指定您的Checked Exception
。 然后,您可以选择在Class B
进行处理或进一步传播。 还需要指定Class B
抛出一个检查异常,或者包装一个Runtime Exception
并抛出它,而不在方法签名中声明它。
public String getfoodata(Foo foo, String foo1, String foo2) throws SystemException { ... }
另外,是否必须对B类中调用的方法引发异常进行单元测试?
Class B
不会引发异常。 它被扔到Class A
并在那里处理。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.