黑马程序员技术交流社区

标题: 异常的处理 [打印本页]

作者: 插兜    时间: 2015-9-10 15:36
标题: 异常的处理
/*
1,异常是那些不正常情况的信息,引发原因等。

Throwable
        |--Error
        |--Exception

2,异常的处理

java 提供了特有的语句进行处理。
try
{
        需要被检测的代码;
}
catch(异常类 变量)
{
        处理异常代码;(处理方式)
}
finally
{
        一定会执行的语句;
}

3,对捕获到的异常对象进行常见方法操作。
        String getMessage():获取异常信息。

        在函数上声明异常。
        便于提高安全性,让调用时进行处理。不处理编译失败。

对多异常的处理。
1,声明异常时,建议声明更为具体的异常,这样处理的可以更具体。
2,对方声明几个异常,就对应几个catch块,不要定义多余的catch块。
        如果多个catch块中的异常出现继承关系,父类异常catch块放在最下面。

建议在进行catch处理时,catch中一定要定义具体的处理方式。
不要简单定义一句e。printStackTrace(),
也不要简单的书写一条输出语句。
*/
class ExceptionDemo3
{
        public static void main(String[] args)//throws Exception//异常有两种处理方式,要么捕捉处理,要么抛出。
        {
                Demo d=new Demo();
                try
                {
                        int x=d.div(4,0);
                        System.out.println("x="+x);
                }
                catch (ArithmeticException e)
                {
                        System.out.println("除零了");
                        System.out.println(e.getMessage());//   /by zero;
                        System.out.println(e.toString());//异常名称:异常信息。

                        e.printStrackTrace();//异常名称,异常信息,异常出现的位置。
                                                                //其实jvm默认的异常处理机制,就是在调用printStackTrace方法。
                                                                //打印异常的堆栈跟踪信息。
                }
                catch(ArrayIndexOutOfBoundsException e)
                {
                        System.out.println(e.toString());
                        System.out.println("角标越界");
                }
                /*catch(Exception e)  //如果多个catch块中的异常出现继承关系,父类异常catch块放在最下面。
                {
                        System.out.println("hahaha:"+e.toString());
                }
                */


                System.out.println("over");
        }
}
class Demo
{
        int div(int a,int b)throws ArithmeticException,ArrayIndexOutOfBoundsException//在功能上通过throws的关键字声明了该功能有可能会出现问题。
        {
                int[] arr=new int[a];

                System.out.println(arr[4]);
                return a/b;
        }
}





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