71、java异常

一、异常概述
异常:异常就是Java程序在运行过程中出现的错误。

二、异常分类
三、异常的处理
方式一:try...catch...finally
 	方式二:throws 抛出

* try...catch...finally的处理格式:
 * 		try {
 * 			可能出现问题的代码;
 * 		}catch(异常名 变量) {
 * 			针对问题的处理;
 * 		}finally {
 * 			释放资源;
 * 		}
 * 
 * 变形格式:
 * 		try {
 * 			可能出现问题的代码;
 * 		}catch(异常名 变量) {
 * 			针对问题的处理;
 * 		}
 
 	注意:
  		A:try里面的代码越少越好
  		B:catch里面必须有内容,哪怕是给出一个简单的提示

四、多个异常的处理
  		方式一:每一个写一个try...catch
 		方式二:写一个try,多个catch
 * 			try{
 * 				...
 * 			}catch(异常类名 变量名) {
 * 				...
 * 			}
 * 			catch(异常类名 变量名) {
 * 				...
 * 			}
 * 			...
 * 
 * 			注意事项:
 * 				1:能明确的尽量明确,不要用大的来处理。
 * 				2:平级关系的异常谁前谁后无所谓,如果出现了子父关系,父必须在后面。

 注意:
  		一旦try里面出了问题,就会在这里把问题给抛出去,然后和catch里面的问题进行匹配,
 		一旦有匹配的,就执行catch里面的处理,然后结束了try...catch
 		继续执行后面的语句。

五、编译时异常和运行时异常的区别
Java中的异常被分为两大类:编译时异常和运行时异常。
所有的RuntimeException类及其子类的实例被称为运行时异常,
其他的异常就是编译时异常
1、编译时异常
Java程序必须显示处理,否则程序就会发生错误,无法通过编译
2、运行时异常
无需显示处理,也可以和编译时异常一样处理

六、异常注意事项
1、子类重写父类方法时,子类的方法必须抛出相同的异常或父类异常的子类。
(父亲坏了,儿子不能比父亲更坏)
2、如果父类抛出了多个异常,子类重写父类时,只能抛出相同的异常或者是他的子集,
子类不能抛出父类没有的异常
3、如果被重写的方法没有异常抛出,那么子类的方法绝对不可以抛出异常,
如果子类方法内有异常发生,那么子类只能try,不能throws

七、案例
public class ExceptionDemo {
	public static void main(String[] args) {
		// 第一阶段
		int a = 10;
		// int b = 2;
		int b = 0;

		try {
			System.out.println(a / b);
		} catch (ArithmeticException ae) {
			System.out.println("除数不能为0");
		}

		// 第二阶段
		System.out.println("over");
		
//		除数不能为0
//		over
	}
}

public class ExceptionDemo2 {
	public static void main(String[] args) {
		int a = 10;
		int b = 0;
		int[] arr = { 1, 2, 3 };

		// 爷爷在最后
		try {
			System.out.println(a / b);
			System.out.println(arr[3]);
			System.out.println("这里出现了一个异常,你不太清楚是谁,该怎么办呢?");
		} catch (ArithmeticException e) {
			System.out.println("除数不能为0");
		} catch (ArrayIndexOutOfBoundsException e) {
			System.out.println("你访问了不该的访问的索引");
		} catch (Exception e) {
			System.out.println("出问题了");
		}

		// 爷爷在前面是不可以的
		// try {
		// System.out.println(a / b);
		// System.out.println(arr[3]);
		// System.out.println("这里出现了一个异常,你不太清楚是谁,该怎么办呢?");
		// } catch (Exception e) {
		// System.out.println("出问题了");
		// } catch (ArithmeticException e) {
		// System.out.println("除数不能为0");
		// } catch (ArrayIndexOutOfBoundsException e) {
		// System.out.println("你访问了不该的访问的索引");
		// }

		System.out.println("over");
		
//		除数不能为0
//		over
	}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值