Sum*_*hra 54 java exception-handling throw throwable throws
可以任你解释的区别是什么之间throw,throws以及Throwable和什么时候使用?
aio*_*obe 85
throws:在编写方法时使用,声明有问题的方法抛出指定的(已检查)异常.
与已检查的异常相反,可能在没有方法声明的情况下抛出运行时异常(NullPointerExceptions等)throws NullPointerException.
throw:实际抛出异常的指令.(或更具体地说,Throwable).
throw关键字后跟一个引用Throwable(通常是一个例外).
例:

Throwable:必须扩展的类才能创建自己的,自定义的,可抛出的类.例:
throw:语句抛出的对象t,其中t instanceof java.lang.Throwable必须是真实的.throws:方法签名标记,用于throw通过该方法指定已检查的异常n.java.lang.Throwable:可以抛出(并捕获)的所有对象的父类型.这真的很容易理解.
该java.lang.Throwable中:
该
Throwable班是在Java语言中所有错误和异常的超类.只有作为此类(或其子类之一)的实例的对象才会被Java虚拟机抛出,或者可以被Javathrow语句抛出 .类似地,只有这个类或其子类之一可以是catch子句中的参数类型 . 更多
关键词throws用于方法声明,这指定了我们可以从这个方法中得到的异常类[Throwable class].
关键字throw用于抛出一个Throwable类实例的对象.
以免看到一些例子:
我们创建自己的异常类
public class MyException super Exception {
}
Run Code Online (Sandbox Code Playgroud)
我们创建一个方法,从异常类创建一个对象,并使用关键字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
}
}
Run Code Online (Sandbox Code Playgroud)
当我们要使用方法时throwMeAException(),我们被迫以特定的方式处理它,因为我们有它抛出的信息,在这种情况下我们有三个选项.
第一个选项是使用块try和catch来处理异常:
private void catchException() {
try {
throwMeAException();
}
catch(MyException e) {
// Here we can serve only those exception that are instance of MyException
}
}
Run Code Online (Sandbox Code Playgroud)
第二种选择是传递异常
private void passException() throws MyException {
throwMeAException(); // we call the method but as we throws same exception we don't need try catch block.
}
Run Code Online (Sandbox Code Playgroud)
第三种选择是捕获并重新抛出异常
private void catchException() throws Exception {
try {
throwMeAException();
}
catch(Exception e) {
throw e;
}
}
Run Code Online (Sandbox Code Playgroud)
恢复,当你需要停止一些动作时,你可以抛出异常,它将返回到某个try-catch块不是服务器.无论何处使用抛出异常的方法,都应该通过try-catch块处理它或将声明添加到方法中.
此规则的例外是java.lang.RuntimeException那些不必声明的规则.这是异常使用方面的另一个故事.
| 归档时间: |
|
| 查看次数: |
49874 次 |
| 最近记录: |