zoukankan      html  css  js  c++  java
  • Java中throw和throws的区别

       系统自动抛出的异常

      所有系统定义的编译和运行异常都可以由系统自动抛出,称为标准异常,并且 Java 强烈地要求应用程序进行完整的异常处理,给用户友好的提示,或者修正后使程序继续执行。

      语句抛出的异常

      用户程序自定义的异常和应用程序特定的异常,必须借助于 throws 和 throw 语句来定义抛出异常。

      throw是语句抛出一个异常。

      语法:throw (异常对象);

      throw e;

      throws是方法可能抛出异常的声明。(用在声明方法时,表示该方法可能要抛出异常)

      语法:[(修饰符)](返回值类型)(方法名)([参数列表])[throws(异常类)]{......}

      public void doA(int a) throws Exception1,Exception3{......}

      举例:

      throws E1,E2,E3只是告诉程序这个方法可能会抛出这些异常,java培训方法的调用者可能要处理这些异常,而这些异常E1,E2,E3可能是该函数体产生的。

      throw则是明确了这个地方要抛出这个异常。

      如: void doA(int a) throws Exception1,Exception3{

      try{

      ......

      }catch(Exception1 e){

      throw e;

      }catch(Exception2 e){

      System.out.println("出错了!");

      }

      if(a!=b)

      throw new Exception3("自定义异常");

      }

      代码块中可能会产生3个异常,(Exception1,Exception2,Exception3)。

      如果产生Exception1异常,则捕获之后再抛出,由该方法的调用者去处理。

      如果产生Exception2异常,则该方法自己处理了(即System.out.println("出错了!");)。所以该方法就不会再向外抛出Exception2异常了,void doA() throws Exception1,Exception3 里面的Exception2也就不用写了。

      而Exception3异常是该方法的某段逻辑出错,程序员自己做了处理,在该段逻辑错误的情况下抛出异常Exception3,则该方法的调用者也要处理此异常。

      throw语句用在方法体内,表示抛出异常,由方法体内的语句处理。

      throws语句用在方法声明后面,表示再抛出异常,由该方法的调用者来处理。

      throws主要是声明这个方法会抛出这种类型的异常,使它的调用者知道要捕获这个异常。

      throw是具体向外抛异常的动作,所以它是抛出一个异常实例。

      throws说明你有那个可能,倾向。

      throw的话,那就是你把那个倾向变成真实的了。

      同时:

      1、throws出现在方法函数头;而throw出现在函数体。

      2、throws表示出现异常的一种可能性,并不一定会发生这些异常;throw则是抛出了异常,执行throw则一定抛出了某种异常。

      3、两者都是消极处理异常的方式(这里的消极并不是说这种方式不好),只是抛出或者可能抛出异常,但是不会由函数去处理异常,真正的处理异常由函数的上层调用处理。

  • 相关阅读:
    OnEraseBkgnd、OnPaint与画面重绘
    .编译ADO类DLL时报错的解决方案
    VC列表框样式
    Codeforces 131D. Subway 寻找环树的最短路径
    Codeforces 103B. Cthulhu 寻找奈亚子
    Codeforces 246D. Colorful Graph
    Codeforces 278C. Learning Languages 图的遍历
    Codeforces 217A. Ice Skating 搜索
    Codeforces 107A. Dorm Water Supply 搜图
    Codeforces 263 D. Cycle in Graph 环
  • 原文地址:https://www.cnblogs.com/gojava/p/3538886.html
Copyright © 2011-2022 走看看