在Java中声明自定义异常

时间:2016-11-19 03:51:57

标签: java exception

当我尝试捕获此异常时,它给出了一个编译错误消息,指出“异常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
    }

2 个答案:

答案 0 :(得分:1)

如果异常不是RuntimeException,则必须声明它(在方法签名throws子句中)。因此,编译器可以检查您调用的代码是否可能抛出此异常,并且不允许您添加永远不会被执行的catch

如果您确定可以在该代码的内部某处抛出此异常,那么它必定已被捕获并被忽略或包含在另一个异常中。或者你正在编译错误版本的类。

答案 1 :(得分:1)

必须使用throw关键字在代码中的某处抛出异常。

例如,

ArithmeticException被抛到代码深处。如果你不想处理(就像那个人对写作ArithmeticException的想法一样),你可以冒出来像

void someMethod () throws Exception
{
    throw new Exception();
}

调用此方法的人必须使用trycatchfinally处理它,就像我们通常对例外IOException等做的那样。

因此,如果您想抛出异常,请将此throw new LinkedListException()添加到您想要引发异常的try块中的某些位置。