异常

一,异常的概念
在程序的运行时候,经常会出现一些意外的情况,这些意外会导致程序出错或者崩溃,从而影响正常的执行。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();
        }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值