黑马程序员技术交流社区

标题: 创建三个类,其中一个类捕获其他两个类的异常并抛出 [打印本页]

作者: SmallRooker    时间: 2014-8-27 23:05
标题: 创建三个类,其中一个类捕获其他两个类的异常并抛出
package com.itheima;

public class Test6 {

        /**
         * 6、 有一个类为ClassA,有一个类为ClassB,在ClassB中有一个方法b,此方法抛出异常,
         * 在ClassA类中有一个方法a,请在这个方法中调用b,然后抛出异常。在客户端有一个类为TestC, 有一个方法为c
         * ,请在这个方法中捕捉异常的信息。完成这个例子,请说出java中针对异常的处理机制。
         */

        /**
         * 异常处理机制:
         * java中的异常处理机制主要依赖于try,catch,finally,throw,throws五个关键字。其中,
         *
         * try关键字后紧跟一个花括号括起来的代码块(花括号不可省略)简称为try块。里面放置可能发生异常的代码。
         *
         * catch后对应异常类型和一个代码块,用于表明该catch块用于处理这种类型的代码块。多个catch块后还可以跟一个finally块。
         *
         * finally块用于回收再try块里打开的物理资源,异常机制会保证finally块总被执行。
         *
         * throws关键字主要在方法签名中使用,用于声明该方法可能抛出的异常
         *
         * throw用于抛出一个实际的异常,throw可以单独作为语句使用,抛出一个具体异常对象。
         *
         * java异常分为两种:Checked异常和Runtime异常。
         *
         * java认为Checked异常都是可以在编译阶段被处理的异常,所以它强制程序处理所有的Checked异常,而Runtime异常则无需处理。
         *
         * Checked异常可以提醒程序员需要处理所有可能发生的异常,但Checked异常也带来一些繁琐之。
         *
         * 对于错误处理机制,主要有如下的两个缺点:
         *
         * 1.无法穷举所有异常情况:因为人类的知识是有限的,异常情况总比可以考虑到的情况多,总有漏网之鱼
         *
         * 2.错误处理代码和业务实现代码混杂严重影响程序的可读性,会增加程序维护的难度。
         *
         * java的异常处理机制:实现将“业务功能代码”和“错误处理代码”的分离!
         *
         * */

        public static void main(String[] args) {
                //创建一个c类的对象,然后调用类的方法,输出捕获的异常
                ClassC c = new ClassC();
                c.methodC();
        }
}

class ClassA
{
    public  static  void methodA()throws Exception
     //抛出异常  这就是说有问题了,methodA不管,methodA把问题扔给调用methodA的地方
    {
        ClassB.methodB();
    }

}

class ClassB
{
    public static void methodB() throws Exception
    {
        // .....一些什么
            throw new Exception(" throw by ClassB.methodB ");
    }

    // 或则,methodB和methodA一样
    public  static  void methodB2() throws Exception
    //抛出异常  这就是说有问题了,methodA不管,methodA把问题扔给调用methodA的地方
   
    {
       // ....
        这里有异常,程序会跳到methodB2()  throw Exception,然后结束
        //....

    }

}

class ClassC
{
    public static void methodC()
    {
        try {
                //或ClassA.methodA();
                ClassB.methodB();
            }

         // 捕捉异常的信息

        //  这个就是说,如果出了问题,就来这里(catch)

         catch(Exception e) {
        // 处理问题了。
                 System.out.println(e.toString());
            }
    }
}
作者: 八零、玖羚    时间: 2014-8-27 23:57
学习了,顶起
作者: 黑马黄武先    时间: 2014-8-28 01:25
看不懂,顶起
作者: liaorubei    时间: 2014-9-25 16:23
可不可以专业一点,一点都看不懂啊,注释写得那么乱啊.
作者: yanghao    时间: 2014-9-26 17:27
这是入学题目吗
作者: yy505032788    时间: 2014-12-22 23:00
马克了走起
作者: 小罗同学    时间: 2015-5-18 16:39
八零、玖羚 发表于 2014-8-27 23:57
学习了,顶起

很是不错
作者: xiaoqiao    时间: 2015-6-8 10:53
好吧!入学测试题原来都是这样的吗?
作者: xiaoxinxin003    时间: 2015-7-16 00:56
一个客户端把我搞蒙了
作者: yuchun    时间: 2015-8-4 20:53
赞一个。。。
作者: liuwuzhou    时间: 2015-9-11 12:02
很感谢大侠的分享
作者: 小海龙    时间: 2016-4-12 23:05
入学的题,学习了,多谢




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2