在Java中抛出关键字

时间:2013-07-10 19:22:42

标签: java exception throw throws

在Java中,关键字(throw)仅用于抛出您创建的异常。如果没有,有人可以举例说明如何在你自己的例外之外使用它。

5 个答案:

答案 0 :(得分:4)

throw任何延伸Throwable

的内容都可以{。}}
void greet(String name) {
    if (name == null) {
        throw new IllegalArgumentException("Cannot greet null");
    }
    System.out.println("Hello, " + name);
}

答案 1 :(得分:2)

不,throw关键字可以与任何 Exception一起使用,包括内置的关键字:

throw new IllegalArgumentException("Your value passed in was illegal");

答案 2 :(得分:2)

正如JLS 14.18

中提到的那样
  

throw语句中的表达式必须表示 1)变量   或者可分配(第5.2节)类型的引用类型的值    Throwable ,或2)空引用,或发生编译时错误。

例如,考虑下面给出的情况:

public void factorial(int num)
{
    if (num < 0 )
    {
        throw new IllegalArgumentException("Invalid number :"+num);
    }
    else
        //....code for factorial.
}

此处IllegalArgumentException不是用户定义的异常。它是内置的RunTimeException并且在oracle docs中指定:

  

抛出表示某个方法已被传递为非法或   不恰当的论点。

答案 3 :(得分:1)

您可以抛出任何扩展Throwable的内容,包括错误,异常和java内置异常。

它也可以用于更复杂的逻辑:

您可以使用它来重新抛出,例如,ThreadDeathErrors以及其他例外情况。当线程必须死亡时,它可以捕获此错误:

catch(ThreadDeathError e){
    System.out.println("Thread going down");
    throw e;
}

在这里,e不是您自己的例外,而是一个被捕获的错误。请尊重错误和例外之间的差异,因为前者通常不会被捕获。

必须重新抛出线程死亡错误才能真正导致死亡。

答案 4 :(得分:0)

throw可用于抛出扩展java.lang.Throwable

的异常