Java复习之异常处理

这篇博客主要是总结一下Java中的异常处理。

1.什么是异常

异常是阻止当前方法或作用域继续执行的问题,在程序中导致程序中
断运行的一些指令。

受检异常(Exception):编译时异常
非受检异常(RuntimeException):运行时异常

2.try与catch关键字

try{
    //有可能发生异常的代码段
}
catch(异常类型 对象)
{
    //异常的处理操作
}......
finally
{
    //异常的统一出口
}

3.异常处理过程分析

(1)一旦产生异常,则系统会自动产生一个异常类的实例化对象。
(2)此时如果存在了try语句,则会自动找到匹配的catch语句,如果没有异常处理,则程序将退出,并有系统报告错误
(3)所有的catch根据方法的参数匹配异常类的实例化对象,如果匹配成功,则表示由此catch进行处理。

4.finally关键字

在异常处理之后,在异常的处理格式还有一个finally语句,那么此语句将
作为异常的统一出口,不管是否产生了异常,最终都要执行此段代码

Demo1

public class ExceptionDemo {

    public static void main(String args[])
    {
        int a = 10;
        int b = 0;
        int c = 0;
        //出现运行时异常,除数为0
        //把有可能发生异常的代码段放到try块中
        //通过catch语句进行异常捕获
        try {
            c = a / b;
        }catch (ArithmeticException ex)
        {
            //输出栈中的异常信息
            ex.printStackTrace();
            System.out.println("算数运算异常");
        }finally {
            System.out.println("finally:不管try中的语句是否出现异常,都会执行");
        }
        System.out.print(c);
    }
}

5.throw与throws关键字

两者配套使用

throws关键字主要是在方法的声明上使用,表示方法中不处理异常,而
交给调用处处理。实际上对于java程序来讲,如果没有加入任何的异常
处理,默认由JVM进行异常的处理操作。

throw关键字表示在程序中手动抛出一个异常,因为从异常处理机制来看
所有的异常一旦产生之后,实际上抛出的就是一个异常类的实例化对象
,那么此对象也可以由throw直接抛出

public class ExceptionDemo2 {
    public static void main(String args[]) {
        try {
            add();
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
    //当输入的数为非数字的时候,则会报出异常
    public static int add() throws Exception {
        try {
            Scanner input = new Scanner(System.in);
            System.out.println("请输入第一个数:");
            int num1 = input.nextInt();
            System.out.println("请输入第二个数:");
            int num2 = input.nextInt();
            return num1 + num2;
        } catch (Exception ex) {
            //对异常进行包装
            throw new Exception("相加运算异常");
        }
    }
}

6.异常处理的语法规则

(1)try语句不能单独存在,可以和catch、finally组成try…catch…finally
或者try…catch或者try…finally三中结构,catch语句可以有一个或者多个,finally语句最多一个,try、catch、finally这三个关键字均不能单独使用
(2)try catch finally 三个代码块中的变量,的作用域分别独立而不能相互访问。
(3)多个catch块时候,java虚拟机会匹配其中一个,异常类或其子类,就执行这个catch块,而不在执行别的catch块

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值