Java基础之异常

1.生活中的异常

如突发的疾病

2.Java中的异常

程序在自上而下执行的时候,发生了不可预期的事件,这个事件阻止了程序的正常运行,这就是异常。如数组下标越界,类转换异常。
Java提供了一个类Throwable,这是所有异常类的父类。

3.Throwable类

3.1构造方法及成员方法
构造方法作用
Throwable();构造一个新的可抛出的异常对象,其详细信息为null
Throwable(String message);构造一个新的可抛出的异常对象,其详细信息为指定的message
成员方法返回值类型作用
getMessage();String获取异常对象的详细信息
printStackTrace();void输出异常的详细信息
toString();String获取异常的简略信息
3.2代码示例:
public class Demo1 {
	public static void main(String[] args) {
		//构造一个异常对象1
		Throwable throwable1 = new Throwable();
		//输出异常的详细信息
		System.out.println(throwable1.getMessage()); //null
		//构造一个异常对象2
		Throwable throwable2 = new Throwable("哈哈"); 
		System.out.println(throwable2.getMessage()); 
        /*
		 * java.lang.Throwable: 哈哈
	at com.qfedu.b_trhowable.Demo1.main(Demo1.java:7)
		 */
		
        throwable2.printStackTrace(); //java.lang.Throwable: 哈哈
		System.out.println(throwable2.toString()); //哈哈
	}
}

4.错误Error和异常Exception

Throwable下面有两个子类,一个叫Error(错误),一个叫Exception(异常)。
Error:代表JVM本身的错误,程序员无法通过代码来解决。
Exception:代表程序运行过程中出现的不可预期的事件,可以通过Java代码解决问题。

异常分类:
​ 编译时异常:如FileNotFoundException,SQLException,ClassNotFoundException,InterruptException等。
​ 运行时异常:如 ArrayIndexOutOfBoundException,ClassCastException,NullPointerException等。

5.异常Exception

对于代码中出现的异常,Java给出了两种解决方案:
​ 1.异常的捕捉
​ 2.异常的抛出

5.1异常的捕捉

语法格式:

 try {
	//有可能出现异常的代码
} catch (Exception e) {
	//针对异常的处理方式
}

执行流程:对于有可能出现异常的代码,如果确实出现异常情况,则执行catch语句体,同时代码继续向下执行;如果没有出现指定的异常,则代码正常执行。
异常参数是多态的运用。

代码示例:

public class Demo2 {
	public static void main(String[] args) {
		int[] arr = new int[2];//数组的容量是2
		test(1, 0, arr);
	}
	public static void test (int a, int b, int[] arr) {
		int ret = 0;
		try {
			//有可能出现的异常的代码
			ret = a / b;
			arr[2] = 89;
		} catch (Exception e) {
			System.out.println("123");
			System.out.println(e.getMessage());
		} 
		System.out.println(4 + 8);
	}
}

【拓展】try-catch-finally

public class Demo3 {
	public static void main(String[] args) {
		int[] arr = new int[2];
		test(1, 0, arr);
	}
	public static void test (int a, int b, int[] arr) {
		int ret = 0;
		try {
			ret = a / b;	
			arr[2] = 89;
		} catch (Exception e) {
			System.out.println("123");
			System.out.println(e.getMessage());
		} finally {
			//无论有没有异常,最终都要执行
			System.out.println(4 + 8);
		}
	}
}
5.2异常的抛出

在代码出现异常的地方进行异常的抛出。
如果异常的抛出的话,一旦发生异常,从出现异常的地方会终止代码。
使用两个关键字:
​ throw: 在方法中自己创建一个异常对象并抛出给jvm虚拟机。
​ throws: 在方法的声明处书写,告知使用者当前方法可能存在异常的抛出。

代码示例:

import java.io.FileNotFoundException;

public class Demo4 {
	public static void main(String[] args) throws Exception{
		test(0);
		Thread.sleep(1000);
	}
	//在方法声明处示意此方法可能存在异常的抛出
	public static void test (int a) throws FileNotFoundException{
		if (a == 0) {
			//当a等于0时,抛出一个异常
			throw new FileNotFoundException();
		}
		System.out.println("jvm xixi");
	}
}

6.自定义异常

Java提供了很多的异常对象,但是有时还是满足不了现实生活的需求,因此可以自己通过继承类Exception创建异常对象。

案例:如果是单身,就抛出一个异常:单身异常类

//定义一个异常类继承Exception类
class SingleException extends Exception{
	public SingleException () {}
	public SingleException (String message) {
		super(message);
	}
}
public class Demo5 {
	public static void main(String[] args) {
		try {
			buy(false);
		} catch (Exception e) {
			System.out.println(e.getMessage());
		}
	}
	public static void buy (boolean flag) throws Exception{
		//true表示是单身  false表示不是单身
		if (flag) {
			throw new Exception("如果你是单身狗,就不卖给你戒指!!!");
		}
		System.out.println("情侣买一送一!!!!");
	} 
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值