try…catch...异常处理语句及throws,throw关键字的作用及用法

详细解读三种异常处理机制作用及用法

1.Trt…catch…用法

作用:负责某一部分的异常处理机制,发现异常给出提示。
语法:Try{可能出现异常区域}
catch(Exception e){异常提示,可以不写}

(catch可以有多个)
finally{资源清理,JDBC/IO}(可以不写)

异常结构:
在这里插入图片描述

Exception,Error是Throwable的子类

注:Exception:一般表示的是程序中出了问题,可以直接使用try…catch…处理,也可以写具体异常(如:NullPointerException,IndexOutOfBoundsException),写具体异常时,捕获到的是其他异常,控制台依然会显示异常抛出,并不再执行后面代码。

案例:
package com.jichu_07_yc;
public class Text {
public static void main(String[] args) {
	int a=5/0;    //出现异常的代码
	System.out.println(a);
	System.out.println("-----------------------");
	System.out.println("你好!!");
}
}

执行结果:

在这里插入图片描述

加上try…catch…
package com.jichu_07_yc;
public class Text {
public static void main(String[] args) {
try {
	int a=5/0;	//异常出现代码
	System.out.println(a);
} catch (Exception e) {
	System.err.println("这里有异常!!!!");
}
	System.out.println("你好!!");
}
}

运行结果:
在这里插入图片描述
分析:
没有加try…catch…时,代码运行到异常部分控制台显示异常抛出,不在运行后面代码;当加上try…catch…时,捕获到异常,并执行下一段代码。


(1) 注意:

Try里面的语句,在捕获到异常之后就不会在执行后面的代码,没有捕获到异常则继续执行。

package com.jichu_07_yc;
public class Text {
public static void main(String[] args) {
try {
	System.out.println("开始");
	int a=5/0;  			//出现异常的代码
	System.out.println(a);  
	System.out.println("结束");
} catch (Exception e) {
	System.err.println("这里有异常!!!!");
}
		System.out.println("你好!!");
}
}

运行结果:
在这里插入图片描述
**并没有运行到“结束”这句代码

(2) 注意:

这里前一个异常不能比后一个异常的范围大,否则会报错
v

Finally块:

  1. 代码写在catch的后面
  2. 无论try捕获中,有没有出现异常,都必须执行finally块中的代码
  3. finally代码块,不是try catch异常捕获语句中必须出现的代码块
  4. finally块中,常用于资源回收的代码
    如下图:

在这里插入图片描述

异常处理流程:

在这里插入图片描述

2.Throws用法:

作用:声明可能抛出的异常(并不一定会发生这些异常),在此方法中不做处理,而是将异常向上抛,交给它的调用者处理
语法:(修饰符)(方法名)([参数列表])[throws(异常类)]{…}

案例:
package com.jichu_07_yc;
class Math{
public int div(int i,int j)  throws Exception {    //throws    向上抛出异常,让它的调用者处理
	int add=i/j;
	return add;
}
}
public class Text1{
	public static void main(String[] args) {
		Math math = new Math();
		try {
			System.out.println("结果为:"+math.div(5, 0));   //异常代码
		} catch (Exception e) {
			System.out.println("这里出现异常!!!!");
		}
	}
}

//------------------------------------------------------------------------------------------------
"""
*也可以继续上抛异常
"""

public class Text1{
	public static void main(String[] args) throws Exception {
		Math math = new Math();	
			System.out.println("结果为:"+math.div(5, 0));   //异常代码
	
		}
	}
//当主方法向上抛出异常时,只能将异常交给JVM进行处理了

当主方法向上抛出异常时,只能将异常交给JVM进行处理了

3.Throw用法:

与throws 关键字不同的是,可以直接使用throw关键字抛出一个异常。抛出时直接抛出异常类的实例化即可。

package com.jichu_07_yc;
public class Text2 {
	public static void main(String[] args) {
		try {
			throw new  Exception("抛出的异常");   //直接抛出异常的实例化对象即可
		} catch (Exception e) {
			System.out.println(e);
		}		
	}
}

运行结果:

在这里插入图片描述

为什么要用throw抛出异常 :

异常产生时,系统会产生一个异常类的实例化对象,只是此时异常类的实例化对象是手工产生的。
由于很多时候用户定义了自己的异常类型,系统无法抛出的,这时就需要借助throw来抛出。
注:throw不会单独使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值