异常

1.背景
代码实例:

System.out.println(10/0)
//执行结果
Exception in thread "main" java.lang.ArithmeticException: / by zero

数组下标越界:

        int[] arr = {1,2,3};
        System.out.println(arr[10]);
        //执行结果:
        //Exception in thread "main"java.lang.ArrayIndexOutOfBoundsException: 10

访问null对象

public class Test{
	public int num = 10;
	public static void main(String[] args){
		Test t = null;
		System.out.println(t.num);
	}
}
//执行结果
Exception in thread "main" java.lang.NullPointerException

所谓异常指的就是程序在运行时出现错误时通知调用者的一种机制
2.异常的基本用法
捕获异常

try{
	有可能出现异常的语句;
}[catch(异常类型 异常对象){
}...]
[finally{
	异常的出口;
}]

注意事项:
try代码块中放的是可能出现异常的代码
catch代码块中放的是出现异常后的处理行为
finally代码块中的代码用于处理善后工作,会在最后执行
其中catch和finally都可以根据情况选择加或者不加
代码实例:

public class Examples {
        public static void main(String[] args) {
            int[] arr = {1,2,3};
            try {
                System.out.println("before");
                System.out.println(arr[10]);
                System.out.println("after");
            }catch(ArrayIndexOutOfBoundsException e){
                //打印出现异常的调用栈
                e.printStackTrace();
            }
            System.out.println("after try catch");
        }
}

一旦try中出现异常,那么try代码块中的程序就不会继续执行,而是交给catch中的代码来执行,catch执行完毕后会继续往下执行
3.catch
a)catch只能处理种类的异常
如果将上述代码修改为空指针异常的形式,则catch语句不能捕获到刚才的空指针异常,因为异常类型不匹配
b)catch可以有多个
一段代码可能会抛出多种不同的异常,不同的异常有不同的处理方式,因此可以搭配多个catch代码块
c)也可以用一个catch捕获所有异常
由于Exception类是所有异常类的父类,因此可以用这个类型表示捕捉所有异常
备注:catch进行类型匹配的时候,不光会匹配相同类型的异常对象,也会捕捉目标异常类型的子类对象
4.finally
finally表示最后的善后工作,例如释放资源
无论是否存在异常,finally中的代码一定都会执行到,保证最终一定会执行到Scanner中的close方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值