A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 不系之舟王 中级黑马   /  2014-12-8 09:46  /  1358 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. package select1;
复制代码
输出结果为:select1.ExceptionC
        at select1.yichang6.g(yichang6.java:26)
        at select1.yichang6.main(yichang6.java:32)
问下大家为什么没有ExceptionB的信息,还有,从函数g()到f()的调用过程,异常的处理不是太懂,亲们懂的给详细分析分析吧


9 个回复

倒序浏览
  1. package select1;
  2. class ExceptionA extends Exception {
  3.     public ExceptionA(String str) {
  4.         super();
  5.     }
  6. }
  7. class ExceptionB extends ExceptionA {

  8.     public ExceptionB(String str) {
  9.         super(str);
  10.     }
  11. }
  12. class ExceptionC extends ExceptionA {
  13.     public ExceptionC(String str) {
  14.         super(str);
  15.     }
  16. }
  17. public class yichang6 {
  18.             static void f() throws ExceptionB{
  19.                 throw new ExceptionB("exception b");//为什么这一句没输出
  20.             }         
  21.             static void g() throws ExceptionC {
  22.                 try {
  23.                     f();
  24.                 } catch (ExceptionB e) {
  25.                     ExceptionC c = new ExceptionC("exception a");
  26.                     throw c;
  27.                 }
  28.             }
  29.             public static void main(String[] args) {
  30.                     try {
  31.                         g();
  32.                     } catch (ExceptionC e) {
  33.                         e.printStackTrace();
  34.                     }
  35.             }
  36.          
  37.         }
复制代码
回复 使用道具 举报
抱歉抱歉,帖子代码刚弄错了
回复 使用道具 举报
class ExceptionA extends Exception {

03.    public ExceptionA(String str) {

04.        super();//你这里忘记写了  super(str);

05.    }

06.}
回复 使用道具 举报
自古2楼出真理
回复 使用道具 举报
当调用函数f()时抛出ExceptionB,被catch接受,然后catch做出的处理是抛出ExceptionC,最终显示的就是ExceptionC了。抛出新的异常也是处理接受 的异常的一种方式。
回复 使用道具 举报
  public ExceptionA(String str) {
        super();//调用super()方法 ,str无效,输出:ExceptionC,表示ExceptionC类抛出了异常。
        //如果调用super(str);输出ExceptionC: exception a ,这里的exception a来自ExceptionC c = new ExceptionC("exception a");
    }
回复 使用道具 举报
throw new ExceptionB("exception b");//为什么这一句没输出????改下面两个地方就O了。
class ExceptionA extends Exception {
    public ExceptionA(String str) {
        super(str);//这里
    }
}
static void g() throws ExceptionC {
                try {
                    f();
                } catch (ExceptionB e) {
                    throw e;//这里
                }
            }
回复 使用道具 举报
chudaming213 发表于 2014-12-8 23:38
当调用函数f()时抛出ExceptionB,被catch接受,然后catch做出的处理是抛出ExceptionC,最终显示的就是Excep ...

同学,我又复习了一遍,这个地方还是不太懂,再问一下,f()抛出ExceptionB,意思是说,函数内可能会出现ExceptionB异常,为什么不去执行函数体内的内容,而是被g()函数内catch接受那????求解。。。
回复 使用道具 举报
不系之舟王 发表于 2014-12-22 13:47
同学,我又复习了一遍,这个地方还是不太懂,再问一下,f()抛出ExceptionB,意思是说,函数内可能会出现Ex ...

执行了吧 你f()的函数体不就是抛出一个b异常吗
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马