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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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());
            }
    }
}

11 个回复

正序浏览
入学的题,学习了,多谢
回复 使用道具 举报
很感谢大侠的分享
回复 使用道具 举报
赞一个。。。
回复 使用道具 举报
一个客户端把我搞蒙了
回复 使用道具 举报
好吧!入学测试题原来都是这样的吗?
回复 使用道具 举报

很是不错
回复 使用道具 举报
马克了走起
回复 使用道具 举报
这是入学题目吗
回复 使用道具 举报
可不可以专业一点,一点都看不懂啊,注释写得那么乱啊.
回复 使用道具 举报
看不懂,顶起
回复 使用道具 举报
学习了,顶起
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马