异常

来源:互联网 发布:淘宝直通车入门教程 编辑:程序博客网 时间:2024/06/06 03:31

一,异常的概念
在程序的运行时候,经常会出现一些意外的情况,这些意外会导致程序出错或者崩溃,从而影响正常的执行。Java中,将这些程序意外称为异常,出现异常时的处理称为异常处理。当异常发生时,系统会将异常封装成一个异常对象抛出。当JVM遇到异常时就会自动停止运行。
二,异常的分类
异常结构图
可以发现,所有的异常都继承自java.lang.Throwable类,Throwable类有两个直接的子类:Error类和Exception类。
Error类,是java应用程序本身无法恢复的严重错误,应用程序不需要捕获、处理这些严重的错误。当程序发生这种严重的错误是,通常的做法是通知用户并中止程序的执行。
Exception类,是由java应用程序抛出和处理的非严重错误,称之为异常。异常有可分为运行时异常(RuntimeException)和非运行时异常(CheckedException)两种。
RuntimeException,运行时异常即程序运行时抛出的异常,不要求程序员在编程的时候必须对这些异常进行处理,也能编译通过。
CheckedException,检查时异常又称为非运行时异常,这样的异常要求程序员必须在编程的时候进行处理,否则编译不会通过。
三、异常的处理
异常的处理方式:try….catch和try….catch….finally
异常对象的常用处理方法:printStackTrack(),用于输出异常的堆栈信息,其中堆栈信息包括程序运行到当前类的执行流程。getMessage(),用于返回异常详细信息的字符串。

    public static void main(String[] args) {//      fun1();        fun2();    }    //try...catch演示    public static void fun1(){        try {            //将可能出现异常的代码放到try代码块中            int x = 5 / 0;        } catch (Exception e) { //用于捕获发生的异常            //捕获到异常的处理程序            //异常对象的两种常用的处理方法            e.printStackTrace();    //1.输入异常的堆栈信息//          e.getMessage();         //2.返回异常详细信息的字符串        }    }    //try...catch...finally    public static void fun2(){        try{            int arr[] = {5,89,23};            System.out.println(arr[3]);        }catch (Exception e){            System.out.println("捕获异常....");        }finally{   //finally中的语句不管是否发生异常都会执行的            System.out.println("finally...");        }    }

四,异常的声明与抛出
在java中可以使用throw关键字抛出一个异常。throw一般在方法体内部使用。
声明方法抛出异常,当方法本身不知道或者不愿意处理某个可能抛出的异常时,可以选用throws关键字将该异常提交给调用该方法的方法进行处理。一般在方法体外部使用。

    public static void main(String[] args) {//      fun1();        //fun2会抛出异常,main方法要对它进行处理        try {            fun2();        } catch (Exception e) {            System.out.println("main....");        }    }    //使用throw关键字抛出异常    public static void fun1(){        try {            System.out.println("测试");            throw new Exception();      //抛出异常对象        } catch (Exception e) {            System.out.println("捕获到异常...");        }finally{            System.out.println("finally...");        }    }    //使用throws关键字抛出异常    public static void fun2() throws Exception{ //抛出异常        System.out.println("fun2...");    }

五、自定义异常类
自定义异常类,就是程序员自己定义异常类。当Java类库中的异常不能满足要求时,就可以自己定义异常。
在自定义异常类时,该类要继承Exception类。

//自定义异常类class AgeException extends Exception{    private int age;    public AgeException(int age) {        this.age = age;    }    public void show(){        System.out.println(age+":年龄设置不合理..");    }}public static void main(String[] args) {        int age = 156;        try {            if(age < 0 || age > 150){                //抛出异常                throw new AgeException(age);            }        } catch (AgeException e) {            //捕获异常并处理异常            e.show();        }}
原创粉丝点击