(15)Java学习笔记——面向对象08——异常

异常

 * 程序的异常:Throwable
 * 		严重问题:Error	(不处理!这种问题一般都是很严重的。)
 * 		问题:Exception
 * 				编译期问题:不是RunTimeException的异常 	(必须进行处理的问题,因为不处理,编译不能通过)
 * 				运行期问题:RunTimeException		(这种问题也不处理,这个问题出现是代码不够严谨,需要修正代码。)

对异常的处理:

JVM默认处理:

如果程序出现问题,我们没有做处理,最终JVM会做默认处理。

把异常的名称,原因及出现的问题等信息输出在控制台。

同时会结束程序。

我们的处理:

A / try...catch ...finally

格式:

 * try...catch...finally的处理格式:
 * 		try{
 * 			可能出现问题的代码;
 * 		}catch(异常名  变量) {
 * 			针对问题的处理;
 * 		finally {
 * 			释放资源;
 * 		}
 * 
 * 变形格式:
 * 		try{
 * 			可能出现问题的代码;
 * 		}catch(异常名   变量){
 * 			针对问题的处理;
 * 		}
注意:

try里面的代码越少越好。

catch必须有内容,哪怕是给出一个简单的提示。才有意义。才没有隐藏异常。

范例:

public class ExceptionDemo {
	public static void main(String[] args) {
		//第一阶段
		int a = 10;
		int b = 0;
//		System.out.println(a/b);
		try {
			System.out.println(a/b);
		} catch (ArithmeticException ae){
			System.out.println("除数不能为0");
		}
		
		//第二阶段
		System.out.println("over");
	}
}
/*返回结果:
除数不能为0
over*/
多个异常处理的格式:

 * 多个异常处理的格式:
 * 		try {
 * 			...
 * 		} catch(异常名   变量名) {
 * 			...
 * 		}
 * 		catch(异常名   变量名){
 * 			...
 * 		}
 * 		...
 * 注意:一旦try里面出了问题,就会在这里吧问题抛出去,然后和catch里面的问题进行匹配,
 * 		一旦有匹配的,就执行catch里面的处理,然后结束。
 * 		继续执行后面的语句。

编译时期异常和运行时期异常的区别:

编译期异常:java程序必须显示处理,否则程序就会发生错误,无法通过编译

运行期异常:无需显示处理,也可以和编译时异常一样处理

在try里面发现问题后,jvm会生成一个异常对象,然后把这个对象抛出,和catch里面的类进行匹配。

如果该对象是某个类型的,就会执行该catch里面的处理。

异常中要了解的方法:

public String getMessage()   //异常的消息串

public String toString()   //返回异常的简单信息描述


 thorws 异常处理方式

无法处理或者不处理的异常,为了解决出错问题,采用throws抛出。

在方法声明上抛出,是为了告诉调用者注意会发生问题。

格式:

throws 异常类名

注意:这个格式必须跟在方法的括号后面

**注意:尽量不要在main方法上抛出异常。

编译期异常的抛出在运行期必须处理!

 throw  异常处理方式:

在功能方法内部出现某种情况,程序不能继续运行,需要进行跳转时,就用throw把异常对象抛出。

这个时候抛出的是异常的对象,而不是异常类。

throw 和 throws的区别:

throws

用着方法声明后面,跟的是异常类名

可以跟多个异常类名,用逗号隔开

表示抛出异常,由该方法的调用者来处理

表示出现异常的一种可能性,并不一定会发生这些异常。

throw

用在方法体内,跟的是异常对象名

只能抛出一个异常对象名

表示抛出异常,由方法体内的语句处理

执行throw则一定抛出了某种异常

异常处理的原则:

该功能内部可以将问题处理,用try

如果处理不了,交由调用者处理,用throws

区别:

后续程序需要继续运行用try

后续程序不需要继续运行就用throws

finally关键字

格式:try...catch...finally...

特点:

被finally控制的语句体一定会被执行

作用:用于释放资源

——————————————————————————————————————

自定义异常

在实际的开发中,需要自己定义异常,且比较继承Exceptin或者RunTimeException。

继承Exception

继承RunTimeException

范例:

public class MyException extends Exception {

}








  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值