第五章 异常处理

版本:JDK1.8
注:观看尚硅谷视频的复习笔记

1、Throwable:是Error和Exception的父类。

2、Error:Java虚拟机无法解决的严重问题。如:JVM系统内部错误、资源耗尽等严重情况。比如:tackOverflowError(栈溢出)和OOM(堆溢出)。一般不编写针对性的代码进行处理。

3、Exception:其它因编程错误或偶然的外在因素导致的一般性问题,可以使用针对性的代码进行处理。例如:空指针访问、试图读取不存在的文件、网络连接中断、数组角标越界。

一、异常分类

1、编译时异常(受检异常)

2、运行时异常(非受检异常)

NullPointerException:空指针异常

ArrayIndexOutOfBoundsException:数组角标越界

StringIndexOutOfBoundsException:字符串角标越界

ClassCastException:类型转换异常

NumberFormatException:数值转换异常

InputMismatchException:输入不匹配异常

ArithmeticException:算术异常

二、异常处理方式

1、抓抛模型

(1)、抛:程序正常执行,一旦出现异常,就会在异常代码处生成一个对应异常类的对象,并将此对象抛出,一旦抛出对象后,后面的代码不再执行。

(2)、抓:获得异常对象,并处理。

异常处理方式:try-catch-finally、throws

(一)、try-catch-finally
try{
    //可能出现异常的代码
    //抛出异常后 try内代码不再继续执行。
}catch(异常类型1 变量名1) {
	//异常处理方式1
}catch(异常类型2 变量名2) {
	//异常处理方式2
}finally{
	//一定会执行的代码
}

1、finally是可选的

2、使用try将可能出现异常的代码包装起来,在执行过程中,一旦出现异常,就会出现一个异常对象,根据此对象类型,去catch中进行匹配

3、一旦try中异常匹配某一个catch时,就进入catch中处理,一旦处理完成,就跳出当前try-catch结构(若有finally则执行finally),继续执行后面的代码。

4、catch中的异常类型如果没有子父类关系,谁在上都无所谓;如果有子父类关系,则子类在上。

5、异常对象的常用方法:String getMessage()、void printStackTrace()

6、在try中声明的变量,try以外不可以调用。

7、处理编译时异常时,程序编译时不再报错,但运行时仍可能报错。

8、finally中代码一定执行,即使catch中出现异常,try、catch中有return语句,仍然执行,且在return之前首先执行finally。

9、运行时异常太多了,不考虑处理,但编译时异常一定要处理。

(二)、throws + 异常类型1,异常类型2
public void method() throws Exception {

}

1、写在方法声明处,当此方法执行时出现异常,会产生一个异常对象,此对象满足throws后异常类型时,就会被抛出,异常代码后续代码不再执行。

2、throws抛出异常给方法调用处,并没有将异常处理掉,可以连续向上抛出。

三、子类重写父类的抛出异常方法

1、重写的抛出异常类型不大于父类被重写的方法抛出的异常。

2、如果父类中被重写的方法没有throws方式抛出异常,则子类重写的方法也不能throws,如果子类重写的方法中出现异常,必须try-catch-finally处理异常。

四、手动创建异常

异常的产生:

1、系统自动生成异常对象

2、手动创建异常,并抛出(throw)

throw new NullPointerException("输入出错");

五、自定义异常类

继承异常类–>提供全局常量:serialVersionUID–>提供重载的构造器

//自定义异常类
public class EcDef extends Exception {

	static final long serialVersionUID = -33875164229948L;

	public EcDef() {
	}

	public EcDef(String msg) {
		super(msg);
	}
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值