Java异常处理

1.异常:
   导致程序中断运行的一些指令。
2.异常分类:

图中为java异常类的继承关系
受检异常(Exception):在编译之前,由编译器检测.
非受检异常(RuntimeException):则在 程序运行时候 产生.

3.try&catch&finally关键字
try{
	// 有可能放生异常的代码段
}catch(异常类型1 对象){
	//异常处理1
}catch(异常类型2 对象){
	//异常处理2
} // ...
finally{
	// 异常统一出口,不管是否异常 都会执行
}
// 多个异常对象 捕获的  简化写法
catch( 异常类型1 | 异常类型2 ... 异常类型n  e);
// 小类型 写前面 大类型 写后面
4.异常处理过程
1.一旦产生异常,则系统会自动产生一个异常类的实例化对象
2.此时 如果存在try语句,则会自动找到匹配的catch 语句执行,如果没有异常处理,则程序将退出,并由系统报告错误.
5.throw与throws
throws: 主要用在方法的声明上,表示方法中不处理异常,而交给调用处处理,实际上在java程序中,若没有任何异常处理,默认有jvm处理
throw:在程序中手动抛出一个异常,从异常处理机制来看,所有的异常一旦产生之后,实际上是抛出一个异常类的实例化对象,该对象可以由throw 直接抛出。
// throws 表示调用该方法可能抛出异常 但是该方法 不做任何处理
public staitc int test(int num1,int num2)throws Exception{
	if(num2 == 0)
		throw new ArithemticException("除数不能为0");
	return num1 / num2;
}
// 但是调用该方法 时候必须捕获
try{
	test(10,0);
}catch(Exception e){
	e.printStackTrace();
}

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块
7.自定义异常类
public class MyException extends Exception{
	private String message;
	public MyException(String message){
		super(message);
		this.message = message;
	}
	@override
	public String toString(){
		return this.message;
	}
}
// 自定义异常 常用于 处理逻辑错误
public static boolean login(String name,String pwd)throws MyException{
	if(! "admin".equals(name)){
		throw new MyException("用户名不正确!");
	}
	if(! "123".equals(pwd)){
		throw new MyException("密码错误");
	}
	return true;
}
public static void main(String [] args){
	try{
		boolean b = login("abc","123");
		System.out.println(b);
	}catch(MyException e){
		e.printStackTrace();
	}
}
8.断言
assert 表达式;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值