异常随笔

处理异常方式1 try…catch…

 * 语法:
 * try{
 * 		可能发生异常的代码
 * 
 * }catch(Exception e){
 * 		捕获异常后  的处理 
 * }
 * 

java 还是采用 面向对象的方式 来处理异常 ,当java 程序 出现异常 就会产生一个异常对象 这个异常对象中封装了 异常的类型 异常的信息 异常发生的位置 java默认的
异常处理机制 是 把异常信息输出到控制台 并且 终止程序的执行 ,这种机制不能再实际开发中使用 ,实际工作中 我们需要 利用 java 的 异常机制 来处理异常

 * try{
 * 		1. try 后 代码块 没有异常  	 不执行catch 代码块, 执行 catch后的代码块	
 * 		2. try 后代码块 发生异常    和 catch 后的异常类型匹配 (同种异常 或者 是 子类异常  发生的异常时捕获的异常的子类)   也就是 能catch 到这个异常
 * 			try 的后续代码不执行   ,执行 catch 代码块 ,执行 catch 后的代码
 * 		3. try 后 发生了异常 但是没有catch   try的后续代码不再执行  catch 的后续代码不再执行    程序中断
 * 	总结:try 后出现异常  java会产生异常对象    寻找能够匹配的catch 块, 找到了 就把异常对象传递给 catch后的异常参数, 出现异常后 try的后续代码不再执行 ,出现异常并被捕获到
 * 		对应的catch 代码块会被执行    catch 代码块后的也会被执行
 * 		
 *  
 * }
  catch(ExceptionType e){
 * 		捕获异常后的处理方式
 * 		e.printStackTrace();    打印异常栈信息
 * 		System.err.println("输出错误信息"); 
 * 		e.getMessage()  异常的提示信息
 * 		e.toString()   异常类信息
 * 		
 * 		throw e;  自己不处理  抛出去  让方法的调用者处理
 * 		
 * }

当前的问题: try 后 出现多重异常 怎么处理

生活案例: 正在上班 突然家里有事 需要回家 就不能继续上班 但是回家之前 需要先请假  请假这个操作 就是 发生了异常 也要执行的操作  那这部分代码 需要放在 finally 代码块中
 * 
 * try{
 * 		可能发生异常的代码
 * }catch(ExceptionType e){
 * 		捕获到异常后 的 处理
 * }finally{
 * 	无论是否有异常 都会执行的代码
 * }
 *  
补充:当 finally代码块 和 return语句同时出现  finally 是在 return 之前执行的   
	但是  在 finally 中 是没有办法改变 return 的 返回值的

一般情况 finally 代码块 都会被执行 除了系统强制退出 System.exit(0); 0 表示正常退出
异常处理级别:

/**
 * Object
 * 		|--Throwable
 * 			|--Error     错误   程序员无法阻止的  控制不了的问题
 * 			|--Exception 异常 程序员可以解决的问题
 * 				|-- RuntimeException  运行时异常   能编译过去 运行的时候可能出现
 * 					|--NullPointException 
 * 					|--InputMismatchException    
 * 					|-- ......
 * 				|-- Checked Exception  检查时异常    如果不处理的话 编译都过不去
 * 					|--ClassNotFoundException
 * 					|--FileNotFoundException
 * 					|-- ......
 * 
异常处理的两种方式:
	1. 捕获异常 try  catch   finally
	2. throws  异常声明   在 方法声明的小括号后面 使用 这个关键字 对外声明 我这个方法 可能会出现
		哪些异常,其后可以跟多个异常 之间用逗号隔开。  谁调用这个方法  谁需要处理这些异常。

throws : 异常声明
throw :异常抛出 相当于 抓住了异常 又把异常释放了 会影响后续程序的执行

	区别:
		1. 位置
			throws  在方法声明处
			throw  在方法内部 手动抛出异常   其后跟的是异常对象    如果异常对象是 检查时异常 需要处理     一般是 声明出去    让方法的调用者 来处理
		2.后跟内容不同
			throws 可以跟多个异常类型  逗号隔开
			throw 后 只能跟一个异常对象
		3.作用不同
			throw 排除异常 相当于 不做处理
			throws 声明异常 方法的调用者需要处理

当时在讲接口时 提到了 接口中的方法 对外声明异常 实现类重写的方法 不能抛出比 接口中的方法的异常更大 更多

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值