java异常处理

//对于非致命异常,保证程序正常依次执行;
异常处理语句:try,catch,finally

try{
	//可能出现异常的语句
}[catch](异常类型,异常对象){
	//异常处理
}[catch](异常类型,异常对象){
	//异常处理
}[catch](异常类型,异常对象){
	//异常处理
} [finally{
	//不管异常如何,都要执行
}]

/*
异常处理中,直接输出异常类的对象,对于此对象,直接打印(toString())获取信息不完整,应使用异常类中提供的printSatckTrace(),获取完整异常信息.
*/

异常处理流程:
1.程序运行中,产生异常,异常类型实例化对象;
2.程序中没有提供异常处理的支持采用JVM默认异常处理方式,打印异常信息,程序中断,退出执行;
3.程序中有异常处理,产生的异常类实例化对象将被try语句捕获;
4.try捕获异常后,与catch中异常类型依次匹配,若与catch中异常类型相同,应使用此catch进行异常处理;若不匹配,则继续匹配后续catch,若最终都匹配不成功,则不进行异常处理;
5.最终执行finally语句,但当执行完finally之后,继续判断异常处理是否进行,若处理过了,执行后序代码;
若未处理,则交由JVM进行默认处理。
异常处理中流程中,操作的始终是异常类实例化对象,对象类型是异常处理的关键;

程序中处理异常的最大类型为Throwable,Throwable中包含两种异常类:
Error:此时程序还未执行出现的异常,开发者无法处理;
Exception:程序中出现异常,开发者可以处理;
所以,异常处理都可以作为Exception的实例化对象;但是描述错误信息不明确;

在进行多个异常处理时,将捕获范围大的异常放在捕获范围小的异常之后

throws关键字
程序运行中可能会产生异常,可以在方法声明上使用throws关键字进行异常类型的标注;

class Math
{
	 public static int div(int x,int y) throws Exception
	 {
	 	return x/y;
	 }
	public static void main(String args [])
	{
		try
		{
			System.out.println(Math.div(10/2);
		}catch(Exception e)
		{
			e.printStackTrace();
		}	
	}
}

//异常处理可向上传递,交由上层处理;

//throw手动实例化异常对象
throw:代码块中使用,手动进行异常对象的抛出;
throws:在方法定义上使用,将此方法可能产生的异常明确告诉给调用处,由调用出进行处理;

异常处理模型

class MaMath
{
	//异常交给被调用处处理一定要在方法上使用throws 
	public static int div(int x,int y) throws Exception
	{
		int tem=0;
		System.out.println("***【START】除法计算开始");
		try{
			tem=x/y;
		}catch(Exception e)
		{
			throw e;//向上抛出异常对象
		}finally
		{
			System.out.println("***【END】出发计算结束");
		}
		return tem;
	}
}

public class JAVA
{
	public static void main(String args[])
	{
		try
		{
			System.out.println(MyMath.div(10,2));
		}catch(Exception e)
		{
			e.printStackTrace();
		}
	}
}

RuntimeException是Exception的子类;RuntimeException对于异常错误,不必要执行;Exception对于异常错误,必须执行;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值