zoukankan      html  css  js  c++  java
  • throws 与 throw

    摘录自:http://blog.csdn.net/ronawilliam/article/details/3299676

    void doA() throws Exception1, Exception3 {
      try {
      ……
      } catch(Exception1 e) {
      throw e;
      } catch(Exception2 e) {
      System.out.println("出错了");
      }
      if (a != b)
      throw new Exception3("自定义异常");
    }

    代码块……中可能产生异常Exception1、Exception2和Exception3。
    如果产生Exception1异常,则捕捉了之后抛出由该方法的调用者去做处理;
    如果产生Exception2异常,则该方法自己做了处理(打印出了说出错了),所以该方法就不会再向外抛出Exception2异常了,void doA() throws Exception1,,Excpetion3里面的Exception2也就不用写了;
    而Exception3异常是该方法的某段逻辑出错,程序员自己作了处理在该段逻辑错误的情况下抛出异常Exception3,则调用者也需要处理。


    throw语句用在方法体内,表示抛出异常,由方法体内的语句处理 
    throws语句用在方法声明后面,表示再抛出异常,由调用这个方法的上一级方法中的语句来处理

    throws主要是声明这个方法会抛出这种类型的异常,使其他地方调用它时知道要捕获这个异常。
    throw是具体向外抛异常的动作,所以它是抛出一个异常实例。

    throws说明你有哪个可能,倾向 
    throw的话,那就是你把那个倾向变成真实的了
    同时:
    1)throws出现在方法函数头;而throw出现在函数体; 
    2)throws表示出现异常的一种可能性,并不一定会发生这些异常;throw则是抛出了异常,执行throw则一定抛出了某种异常; 
    3)两者都是消极处理异常的方式(这里的消极并不是说这种方式不好),只是抛出或者可能抛出异常,但是不会由函数去处理异常,真正的处理异常由函数的上层调用处理

  • 相关阅读:
    poj 3243 Clever Y(BabyStep GiantStep)
    poj 2417 Discrete Logging
    poj 3481 Double Queue
    hdu 4046 Panda
    hdu 2896 病毒侵袭
    poj 1442 Black Box
    hdu 2815 Mod Tree
    hdu 3065 病毒侵袭持续中
    hdu 1576 A/B
    所有控件
  • 原文地址:https://www.cnblogs.com/zx3707/p/5669642.html
Copyright © 2011-2022 走看看