java_异常处理 try-catch-finally

异常处理

基本介绍

异常处理就是当异常发生时,对异常处理的方式。

异常处理的方式

在这里插入图片描述

try-catch-finally的处理机制示意图

在这里插入图片描述
在这里插入图片描述

try-catch 异常处理

在这里插入图片描述
在这里插入图片描述

package com.hspedu.try_;

public class TryCatchDetail {
	public static void main(String[] args) {
//快捷键:ctrl + atl + t
//1. 如果异常发生了,则异常发生后面的代码不会执行,直接进入到 catch 块
//2. 如果异常没有发生,则顺序执行 try 的代码块,不会进入到 catch
//3. 如果希望不管是否发生异常,都执行某段代码(比如关闭连接,释放资源等)则使用如下代码- finally
		try {
			String str = "韩顺平";
			int a = Integer.parseInt(str);
			System.out.println("数字:" + a);
		} catch (NumberFormatException e) {
			System.out.println("异常信息=" + e.getMessage());
		} finally {
			System.out.println("finally 代码块被执行...");
		}
		System.out.println("程序继续...");
	}
}

在这里插入图片描述

package com.hspedu.try_;

public class TryCatchDetail02 {
public static void main(String[] args) {
//老韩解读
//1.如果 try 代码块有可能有多个异常
//2.可以使用多个 catch 分别捕获不同的异常,相应处理
//3.要求子类异常写在前面,父类异常写在后面
	try {
		Person person = new Person();
//person = null;
		System.out.println(person.getName());//NullPointerException
		int n1 = 10;
		int n2 = 0;
		int res = n1 / n2;//ArithmeticException
	} catch (NullPointerException e) {
		System.out.println("空指针异常=" + e.getMessage());
	} catch (ArithmeticException e) {
		System.out.println("算术异常=" + e.getMessage());
	} catch (Exception e) {
		System.out.println(e.getMessage());
	} finally {
	}
}
}
class Person {
	private String name = "jack";
	public String getName() {
		return name;
	}
}

在这里插入图片描述

补充:

当发生异常时,程序必须 执行完finally内的代码,才会退出,其后面的程序代码不会被执行

package com.hspedu.try_;

public class TryCatchDetail03 {
	public static void main(String[] args) {
/*
可以进行 try-finally 配合使用, 这种用法相当于没有捕获异常,
因此程序会直接崩掉/退出。应用场景,就是执行一段代码,不管是否发生异常,
都必须执行某个业务逻辑
*/
		try{
			int n1 = 10;
			int n2 = 0;
			System.out.println(n1 / n2);
		}finally {
			System.out.println("执行了 finally..");
		}
		System.out.println("程序继续执行..");
	}
}

练习题1

在这里插入图片描述

练习题2

在这里插入图片描述

练习题3

在这里插入图片描述

try-catch-finally 执行顺序小结

在这里插入图片描述

最佳实践

如果用户输入的不是一个整数,就提示他反复输入,直到输入一个整数为止

package com.hspedu.try_;
import java.util.Scanner;

public class TryCatchExercise04 {
public static void main(String[] args) {
//如果用户输入的不是一个整数,就提示他反复输入,直到输入一个整数为止
//思路
//1. 创建 Scanner 对象
//2. 使用无限循环,去接收一个输入
//3. 然后将该输入的值,转成一个 int
//4. 如果在转换时,抛出异常,说明输入的内容不是一个可以转成 int 的内容
//5. 如果没有抛出异常,则 break 该循环
Scanner scanner = new Scanner(System.in);
int num = 0;
String inputStr = "";
while (true) {
System.out.println("请输入一个整数:"); //
inputStr = scanner.next();
try {
num = Integer.parseInt(inputStr); //这里是可能抛出异常
break;
} catch (NumberFormatException e) {
System.out.println("你输入的不是一个整数:");
}
}
System.out.println("你输入的值是=" + num);
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HHppGo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值