(十二)java异常处理

(十二)java异常处理

  1. 异常就是导致程序无法正常运行的错误。 下图就是异常类的父子图。
    在这里插入图片描述

1. 代码一旦抛出异常,后面的代码就不会被执行了

2. 异常的分类
①非检查性异常,在编译期间不会报错,包括空指针异常,数组越界,除以0.(就是上图中画圈的3个)

②检查性异常 ,在编译期间就会报错,只有解决了程序才能执行。
处理方式:在类中抛出异常或者用try catch包围异常。
区别:直接抛出不会运行后面的代码。
而catch捕捉会运行后面的(写在try-catch外面的)代码

3. 异常的处理过程
抛出异常,捕获异常,处理异常

4. try-catch捕捉异常方式
try中写可能存在异常的代码,catch用来捕捉异常,一个try后面可以有多个catch,catch可以捕捉不同的异常,根据异常的不同,可以进行不同的异常处理。但是,只要捕获到一个异常,程序就终止了,即后续可能存在异常的代码块(try{}中)也就不会执行了。
当try代码块中有异常抛出,系统就会从catch中寻找匹配的异常,直至遇到类型匹配的异常为止。一般而言,异常捕获都是从小的异常(子类)到大的异常(父类)。

5. exception 是所有异常的父类,只能写在最后一个catch中,如果写在第一个catch里面,后面的异常处理就不会被执行了。例子如下
在这里插入图片描述第二个框是没有处理异常,将异常抛出了,后面打印语句就无法运行了。结果图如下在这里插入图片描述

6. finally代码块,是放在try-catch语句后面的。意思是,系统无论是否发生异常,finally里的代码都会被运行。一般在finally语句中可以进行资源的清除操作。如流的关闭。注意:当try或catch代码块中执行了System.exit(0)时,finally代码块中的内容才不被执行 。
在这里插入图片描述

7. throws 声明异常??????谁调用,谁解决
如果方法中某一个语句执行时可能产生异常,但是不确定如何去解决,那么就可以将此异常使用throws抛出。throws只能声明异常,但是不能处理,声明出异常,交给调用他的方法去处理。通俗一点讲:throws就是自己出现问题了,自己不去解决,而是把问题提(抛)出来,来交给别人(调用他的)来处理。
注意:throws后面可以抛出多个异常。
在这里插入图片描述

8. throw关键词
throw是强制抛出异常,与throws 或者 try-catch连用。
通常与throws连用,强制抛出异常。
throw 抛出的是具体的异常,没有被处理。由调用他的方法处理。

9. 区别
①throws 出现在方法声明上,而throw通常都出现在方法体内。
②throws 表示出现异常的一种可能性,并不一定会发生这些异常;throw则是抛出了异常,执行throw则一定抛出了某个异常对象。

10. 自定义异常
自定义异常类继承父类exception,并且写上一个带参的构造方法。方便给自己在做项目的时候使用。
例子:编写一个检查给定的数字的数据类型是否为byte的程序 ,如果此数字超出byte数据类型表示的数的范围,则引发 用户自定义的异常ByteSizeException,并显示相应的错误信息。
①先写一个继承exception的子类ByteSizeException

public class ByteSizeException extends Exception {
	//一个带参构造方法,用于提示错误信息
	public ByteSizeException(String arg0) {
		super(arg0);
	}
}

②写一个测试类,使用throw抛出异常。

public class TestByteSizeException {
	public static void main(String[] args) {
		System.out.println("请输入byte型数");
		Scanner scanner=new Scanner(System.in);
		int i=scanner.nextInt();
		if (i<=127&&i>=-128) {
			System.out.println("输入合法");
		}else {
			try {
				throw new ByteSizeException("输入的不是BYTE类型数字!");
			} catch (ByteSizeException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}finally {
				System.out.println("666");
			}
		}
	}
}

体会:一开始没有明白throws的具体含义,模糊了他与try-catch的关联,让我费解了好久,现在懂了,记录下来。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值