Java中的Throw关键字
在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
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怎么可能知道是谁创建了异常类?这个问题毫无意义。