java throw throws try-catch-finally异常处理

一、异常分类

在这里插入图片描述

1、受检异常

在进行代码编写时就会给出提示的异常需要使用 try-catch-finally 处理或使用 throws 抛出。

2、非受检异常

在代码编写时不会给出提示但是在运行时可能会出现的异常。例如:空指针异常,数组脚标越界异常等

String str1 = null;
String str2 = "好好学习,天天向上!";
System.out.println(str1.equals(str2));	//编写时并没有报错,运行时会出现NullPointerException异常

在这里插入图片描述

二、异常处理

1、throws

throws:方法可能会抛出异常。(用在声明方法时,表示该方法可能要抛出异常)

2、throw

throw:对于非受检异常当代码运行到此处时就会出现异常,对于受检异常在编写时就会给出提示。两种异常都可以抛出或用 try-catch-finally 解决,但通常使用throws抛出(throw声明在方法内部)

//非受检异常
public void setAge(int age) throws RuntimeException{
		if(age<0 || age>150) {
			RuntimeException e;	
			throw e = new RuntimeException("年龄不合法");
		}else {
			this.age = age;
		}
	}

3、try-catch-finally

try-catch-finally:用于处理异常,当异常不被抛出时就需要使用 try-catch-finally 处理,其中 finally 部分是必须执行部分即使在 try 或 catch 中执行了return 语句也会在返回前运行finally中的语句。finally 可以有也可以没有。
将可能出现异常的部分放在try块中,对异常的处理放在catch块中。
出现异常后不再执行后面的语句,如果异常出现在try中便不再执行try块中后面的语句。
public static void main(String[] args) {
	String str1 = "好好学习,天天向上!";
	String str2 = null;
	boolean bool;
	try {
		bool = str2.equals(str1);	//在这会出现空指针异常
		System.out.println("少睡觉,多看书!");
	}catch(NullPointerException e) {
		System.out.println("str2不能为空!");
		return;
	}finally {
		str2 = "好好学习,天天向上!";
		System.out.println(str1.equals(str2));
	}
}
/*执行结果为:
str2不能为空!
true
*/
但是有一种特殊的情况:如果出现System.exit(0); 语句便终止程序,不会继续执行后面的代码
public static void main(String[] args) {
	String str1 = "好好学习,天天向上!";
   	String str2 = null;
   	boolean bool;
   	try {
   		bool = str2.equals(str1);
   		System.out.println("少睡觉,多看书!");
   	}catch(NullPointerException e) {
   		System.out.println("str2不能为空!");
   		System.exit(0);
   	}finally {
   		str2 = "好好学习,天天向上!";
   		System.out.println(str1.equals(str2));
   	}
}
/*执行结果为:
str2不能为空!
*/

三、自定义异常

编写一个类,继承Exception,并重写一个参数的构造方法即可完成自定义受检异常类型。
编写一个类, 继承RuntimeExcepion,并重写一个参数的构造方法即可完成自定义运行时异常类型。

public class Age extends Exception{
	public Age(String str) {
		super(str);
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值