我有一个JUnit测试类,我是新手。我还试图学习如何创建自己的异常类。我一直在创建一个BigInt类,其中一个构造函数接受了字符串。这段代码循环遍历一个数组,它应该检查每个位置的字符是否是整数。现在有一个错误,上面写着“BigIntFormatException的无法访问的catch块。这个异常永远不会从try语句体中抛出”为什么有任何想法?
String[] s = { " - - 1424", "+ + 14324", "a142432", "1432 3413",
"+242134.32421", "", " \n", "\t ++" };
for (int i = 0; i < s.length; i++) {
try {
BigInt b = new BigInt(s[i]);
assertFalse(true);
} catch (BigIntFormatException e) {
assertTrue(true);
}
}
到目前为止,这是我的BigIntFormatException类看起来的样子,所以对这部分的任何帮助也会受到赞赏。
public class BigIntFormatException extends Exception {
public BigIntFormatException() {
super();
}
public BigIntFormatException(String message) {
super(message);
}
}
答案 0 :(得分:2)
简单地说,这个编译失败非常清楚: BigInt
的构造函数和断言声明它们将抛出BigIntFormatException
由于Exception
是checked exceptions的类(意味着你必须将它们包装在try-catch
块中),所以必须声明它们在{{{}的构造函数中抛出1}}。
这就是你的方式。
BigInt
答案 1 :(得分:1)
您需要在BigInt类中抛出异常
if(/*error condition*/) {
throw new BigIntFormatException("your message");
}