异常处理:抛出,抛出和Throwable

Sum*_*hra 54 java exception-handling throw throwable throws

可以任你解释的区别是什么之间throw,throws以及Throwable和什么时候使用?

aio*_*obe 85

  • throws:在编写方法时使用,声明有问题的方法抛出指定的(已检查)异常.

    与已检查的异常相反,可能在没有方法声明的情况下抛出运行时异常(NullPointerExceptions等)throws NullPointerException.

  • throw:实际抛出异常的指令.(或更具体地说,Throwable).

    throw关键字后跟一个引用Throwable(通常是一个例外).

例:

在此输入图像描述


  • Throwable:必须扩展的类才能创建自己的,自定义的,可抛出的类.

例:

在此输入图像描述


  • 为了将屏幕截图添加到代码片段中,先生,为您+1。很好的答案。 (2认同)
  • +1为整洁和详细的说明. (2认同)

oks*_*ayt 9

  • throw:语句抛出的对象t,其中t instanceof java.lang.Throwable必须是真实的.
  • throws:方法签名标记,用于throw通过该方法指定已检查的异常n.
  • java.lang.Throwable:可以抛出(并捕获)的所有对象的父类型.

有关使用异常的教程,请参见此处.


Dam*_*ash 5

这真的很容易理解.

java.lang.Throwable中:

Throwable班是在Java语言中所有错误和异常的超类.只有作为此类(或其子类之一)的实例的对象才会被Java虚拟机抛出,或者可以被Java throw语句抛出 .类似地,只有这个类或其子类之一可以是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那些不必声明的规则.这是异常使用方面的另一个故事.