java中异常详解以及运行时异常runtime exception

异常体系

在这里插入图片描述
我们在系统中有一个基类时throwable,异常包。
然后Error类继承之,Error类描述的是java运行时内部错误或者导致资源耗尽的错误,一旦这种错误出现,不是抛出异常,会直接告知用户并安全终止。比如栈溢出
Exception继承throwable后,又被IOEception和RunningException继承。
IOException表示:书写的程序本身是没有问题的,但是由于出现IO问题导致的异常。比如打开一个不存在的文件。
RunTimeException是运行时异常;是由于程序本身错误导致的。
——————————————————————————————————
除了这种关系,异常还分为受查异常和非受查异常。
非受查异常:就是继承于Error和RunTimeException类的所有异常,不强制用户处理,但是运行会报错终止。
受查异常:Exception以及IOException的子类,会强制用户进行处理。

常见的运行时异常,以及导致原因 --5个

1在数组应用中
因为数组在java中属于引用数据类型所以,必须在使用前初始化,否则编译时不会出错,运行时会爆出异常,NullPointerEXception --空指向异常
在这里插入图片描述
**(1)**在字符串比较中,如果一个空对象"."调用对应类中成员则会运行时异常nullPointException

String str1 =null;
str1.equals("hello");

2在数组访问中
当访问的数组下标越界时会报一个运行时异常,ArrayIndexOutOfBoundsException–数组访问越界异常
在这里插入图片描述
3在多态中
当父类引用需要调用子类填充方法时,需要向下转型。但是向下转型前需要先向上转型,否则会发生运行时异常,ClassCastException–类型转换异常
我们可以通过: 引用名 instanceof 类名 的返回值来判断该引用是否表示该类实例,从而判断是否发生了向上转型。

在这里插入图片描述

4在包装类中
如果我们利用给基本数值类型的对应的包装类中穿的类型不同则会发生运行时异常NumberFromatException
在这里插入图片描述

5当数学运算中比如10/0,除0操作就会引用数学运算异常。ArithmeticException
在这里插入图片描述

异常处理格式

语法:

try{
//可能出现异常的语句
}catch(异常类 异常对象){
//出现异常后进入catch,这里是解决方案
}
finally{
//异常出口,这里无论是否发生异常都会执行该finally中的代码,即使try或者catch中出现return,依然会执行finally
}

以上是最全的。但是我们在书写过程中可以有选择的搭配try和catch或者finally。

throw throws用法

throws用在方法上,表示此方法中可能发生异常但是内部不处理,将异常抛给调用方,返回后处理。

throw 用在方法中,用来用用户自行产生异常类对象。
语法:throw new Exception("对该方法描述");
举个例子。
在这里插入图片描述

断言

assert 布尔表达式 :“false的藐视”;
eg:assert num != 0 :“错误num不能为0”;
当断言中的布尔表达式返回false时,会抛出异常。
但是断言需要手动开启。运行时 java -ea //开启断言

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值