3 回答
TA贡献1821条经验 获得超4个赞
throws:在编写方法时使用,用于声明所讨论的方法引发指定的(检查的)异常。
与检查的异常相反,运行时异常(NullPointerExceptions等)可能会在没有声明方法的情况下抛出throws NullPointerException。
throw:实际引发异常的指令。(或更具体地说,Throwable)。
throw关键字后面是对Throwable(通常是异常)的引用。
例:
Throwable:必须扩展该类以创建自己的,自定义的,可抛出的类。
TA贡献2019条经验 获得超9个赞
throw
:语句抛出的对象t
,其中t instanceof java.lang.Throwable
必须是真实的。throws
:方法签名令牌,用于指定throw
该方法检查的异常。java.lang.Throwable
:可以抛出(捕获)的所有对象的父类型。
TA贡献1864条经验 获得超2个赞
这真的很容易理解。
该java.lang.Throwable中:
该Throwable班是在Java语言中所有错误和异常的超类。Java虚拟机仅抛出属于此类(或其子类之一)的实例的对象,或者Java throw语句可以抛出该对象 。同样,catch子句中的参数类型只能是此类或其子类之一 。 更多
关键字throws用于方法声明中,它指定了我们可能期望此方法产生的异常类型[Throwable class]。
关键字throw用于抛出Throwable类实例的对象。
以免看到一些例子:
我们创建自己的异常类
public class MyException super Exception {
}
我们创建了一个方法,该方法从异常类创建对象,并使用关键字throw 抛出该对象。
private void throwMeAException() throws MyException //We inform that this method throws an exception of MyException class
{
Exception e = new MyException (); //We create an exception
if(true) {
throw e; //We throw an exception
}
}
当我们要使用method时throwMeAException(),由于我们掌握了它抛出某些东西的信息,因此我们不得不以特定的方式来处理它,在这种情况下,我们有三个选择。
第一种选择是使用块try和catch处理异常:
private void catchException() {
try {
throwMeAException();
}
catch(MyException e) {
// Here we can serve only those exception that are instance of MyException
}
}
第二种选择是传递异常
private void passException() throws MyException {
throwMeAException(); // we call the method but as we throws same exception we don't need try catch block.
}
第三种选择是捕获并重新引发异常
private void catchException() throws Exception {
try {
throwMeAException();
}
catch(Exception e) {
throw e;
}
}
继续,当您需要停止某些操作时,您可以抛出异常,该异常将通过某些try-catch块返回直到服务器无法使用。无论在何处使用引发异常的方法,都应通过try-catch块进行处理,或将声明添加到方法中。
该规则的例外是java.lang.RuntimeException那些不必声明的规则。这是异常使用方面的另一个故事。
添加回答
举报