在 Java 中,关键字 (throw) 仅用于抛出您创建的异常。如果没有,有人可以举一个例子说明它是如何在你自己的例外之外使用的。
问问题
3280 次
5 回答
4
你可以throw
扩展任何东西Throwable
void greet(String name) {
if (name == null) {
throw new IllegalArgumentException("Cannot greet null");
}
System.out.println("Hello, " + name);
}
于 2013-07-10T19:24:44.587 回答
2
不,throw
关键字可以与any Exception
一起使用,包括内置关键字:
throw new IllegalArgumentException("Your value passed in was illegal");
于 2013-07-10T19:24:17.017 回答
2
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 文档中指定:
抛出以指示方法已传递了非法或不适当的参数。
于 2013-07-10T19:24:57.667 回答
1
您可以抛出任何扩展的内容,Throwable
包括错误、您的异常和 java 内置异常。
它也可以用于更复杂的逻辑:
例如,您可以使用它来重新抛出 ThreadDeathErrors
其他异常。当一个线程必须死时,它可以捕获这个错误:
catch(ThreadDeathError e){
System.out.println("Thread going down");
throw e;
}
这里,e
不是你自己的异常,而是一个被捕获的错误。请尊重错误和异常之间的区别,因为前者通常不会被捕获。
必须重新抛出线程死亡错误才能真正导致 theread 死亡。
于 2013-07-10T19:25:22.163 回答
0
throw 可用于抛出任何扩展 java.lang.Throwable 的异常
于 2013-07-10T19:57:13.187 回答