当我尝试捕获此异常时,它给出了一个编译错误消息,指出“异常LinkedListException永远不会在相应的try语句的主体中抛出”。这是什么意思?
try {
LList.Node someNode = list.nextNode(node);
// We should not get here.
assertTrue(false);
}
catch ( LinkedListException ex) {
// If we get here we are happy as it throw the exception
}
答案 0 :(得分:1)
如果异常不是RuntimeException,则必须声明它(在方法签名throws
子句中)。因此,编译器可以检查您调用的代码是否可能抛出此异常,并且不允许您添加永远不会被执行的catch
。
如果您确定可以在该代码的内部某处抛出此异常,那么它必定已被捕获并被忽略或包含在另一个异常中。或者你正在编译错误版本的类。
答案 1 :(得分:1)
必须使用throw
关键字在代码中的某处抛出异常。
例如,
ArithmeticException
被抛到代码深处。如果你不想处理(就像那个人对写作ArithmeticException
的想法一样),你可以冒出来像
void someMethod () throws Exception
{
throw new Exception();
}
调用此方法的人必须使用try
,catch
,finally
处理它,就像我们通常对例外IOException
等做的那样。
因此,如果您想抛出异常,请将此throw new LinkedListException()
添加到您想要引发异常的try块中的某些位置。