java中阶之异常

在这里插入图片描述

二十三.异常

1.概念:

在java语言中,将程序执行中发生的不正常情况称为异常

2.分类:

1.Error:java虚拟机无法解决的严重问题,如jvm系统内部错误,资源耗尽等

2.Exception:因编程错误,或偶然的外部因素导致的一般性问题,可以使用正对性的代码处理,例如空指针访问,网络中断等.

Exception分为两大类,运行时异常和编译时异常

检查时异常
概念:因语法问题导致的错误
解决:修改语法
运行时异常
概念:但是因为编写时思路问题,或传入的数据导致程序无法正常运行
解决:更换思路,修改传入的数据,加入容错判断

体系结构:

​ Throwable:

​ Error(错误)

​ Exception(异常) :CheckedException(检查时异常),RuntimeException(运行时异常)

3.五大运行异常

1. NullPointerException 空指针异常

   当应用程序试图在需要对象的地方使用null时,抛出该异常

2. ArithmeticException  数学运算异常

   当出现异常的运算条件时,抛出此异常

3. ArrayIndexOutOfBoundsException数组下标越界异常

   用非法索引访问数组时抛出异常,如果索引为负或大于等于数组,则为非法索引

4. ClassCastException类型转换异常

   当时图将对象强制转换为不是实例的子类时,抛出该异常

5. NumberFormatException数字格式不正确异常

   当应用程序试图将字符串转换成一种数值类型,但该字符串不能转换为适当格式时,抛出该异常=>使用异常我们可以确保输入是满足条件数字


4.编译异常

SQLException    操作数据库时查询表可能发生异常

IOException   操作文件时发生异常

FileNotFoundException     当操作一个不存在的文件时,发生异常

ClassNotFoundException    加载类,而类不存在时,发生异常

EOFException    操作文件,到文件末尾,发生异常

IllegalArguementException    参数异常

5.异常处理方式

try-catch
	语法:
	try{
		异常代码
	}catch(异常类型 变量名){
		处理方式
	}catch(异常类型 变量名){
		处理方式
	}.....
	catch(异常类型 变量名){
		处理方式
	}finally{
		必须执行的代码
	}
注意:
	1.如果发生异常,则异常后面的代码不再执行,直接进入catch
	2.如果没有异常发生,则顺序执行try的代码块,不会进入catch
	3.如果希望不管是否发生异常,都执行某段代码(关闭连接,释放资源)则使用finally
	4.可以有多个catch语句,捕获不同的异常(进行不同的业务处理),要求父类异常在后,子类异常在前,比如(Exception在后,NULLpointerException在前)如果发生异常,只会匹配一个catch
	5.也可以使用try-finally配合使用,**这种用法相当于没有捕获异常**,因此程序会崩。应用场景,就是执行一段代码,不管是否发生异常,都必须执行某个业务逻辑
	6.捕获异常后,有return时,执行return但不会返回return的后缀,  执行finally

throws:
	将发生的异常抛出,交给调用者自行处理,最顶尖的处理者是JVM
	语法:
		throws 异常类型1,异常类型2....
		使用位置方法的形参之后
	
基本介绍:
	1.如果一个方法中的语句执行时,可能生成某种异常,但是并不能确定如何处理这种异常,则此方法应显示声明抛出异常,表明该方法将不对异常进行处理,而是由方法的调用者处理
	2.在方法声明时,可以使用throws抛出异常,throws后面的异常类型可以是方法中产生的异常类型,也可以是它的父类.
	3.throws可以抛出多个异常
	
细节:	
	1. 对于编译异常,程序中必须处理,比如:try-catch或者throws
	2. 对于运行时异常,程序中如果没有处理,默认就是throws的处理方式
	3. 子类重写父类方法时,对抛出异常的规定:子类重写的方法,所抛出的异常类型要么和父类抛出的异常一致,要么为父类抛出异常类型的子类
	4. 在throws过程中,如果有方法try-catch,就相当于处理异常,就可以不必thows
throw
	语法:
		throw 异常对象;
	位置:方法中	

6.自定义异常

当程序中出现某些错误时,但是该错误信息并没有在Throwable子类中描述处理,这个时候可以自己设计异常类,用于描述错误信息.

1.步骤:

1.定义类:自定义异常类,
2.异常类类名继承Exception或者RuntimeException
3.编写其构造函数
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

半糖不加奶

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

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

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

打赏作者

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

抵扣说明:

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

余额充值