Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中的Throw关键字_Java_Exception_Throw_Throws - Fatal编程技术网

Java中的Throw关键字

Java中的Throw关键字,java,exception,throw,throws,Java,Exception,Throw,Throws,在Java中,关键字(throw)仅用于抛出您创建的异常。如果没有,是否有人可以举例说明如何在您自己创建的异常之外使用它。否,throw关键字可以与任何异常一起使用,包括内置异常: throw new IllegalArgumentException("Your value passed in was illegal"); 您可以抛出任何扩展可丢弃的东西 void greet(String name) { if (name == null) { throw new Il

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

否,
throw
关键字可以与任何
异常一起使用,包括内置异常:

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

您可以
抛出
任何扩展
可丢弃的东西

void greet(String name) {
    if (name == null) {
        throw new IllegalArgumentException("Cannot greet null");
    }
    System.out.println("Hello, " + name);
}
如中所述

throw语句中的表达式必须表示1)或变量 或可分配给该类型的参考类型的值(§5.2) 可丢弃,或2)出现空引用或编译时错误

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

public void factorial(int num)
{
    if (num < 0 )
    {
        throw new IllegalArgumentException("Invalid number :"+num);
    }
    else
        //....code for factorial.
}
public void阶乘(int num)
{
if(num<0)
{
抛出新的IllegalArgumentException(“无效数字:+num”);
}
其他的
//..阶乘的代码。
}
这里不是用户定义的异常。它是一个内置的
运行时异常
,如oracle文档中所述:

抛出以指示方法已通过非法或 不恰当的论点


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

它还可用于更复杂的逻辑:

您可以使用它来重新显示,例如,
ThreadDeathErrors
以及其他异常。当线程必须终止时,它可以捕获以下错误:

catch(ThreadDeathError e){
    System.out.println("Thread going down");
    throw e;
}
在这里,
e
不是您自己的例外,而是捕获到的错误。请尊重错误和异常之间的差异,因为前者通常不会被捕获


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

throw可用于排除扩展java.lang.Throwable的任何异常。

抛出新的IllegalArgumentException(“任意”)JVM怎么可能知道是谁创建了异常类?这个问题毫无意义。