异常
1 概述
异常是一些用来封装错误信息的对象
它由异常的类型,提示信息,报错的行号提示三部分组成
2 异常的继承结构
3 异常的处理方式
当程序中遇到了异常,通常有两种处理方式:捕获或者向上抛出
当一个方法抛出异常,调用位置可以不做处理继续向上抛出,也可以捕获处理异常
可以结合生活中的例子:如果工作中遇到了问题,我们可以选择自己处理(捕获),或者交给上级处理(抛出)
捕获方式:
抛出方式:
对于不想现在处理或者处理不了的异常可以选择向上抛出
方式: 在方法上设置异常的抛出管道,即:
在可能会发生异常的方法上添加代码:
throws 异常类型
例如:void method1 throws Exception1,Exception2,Exception3{ }
TIPS:方法上有默认的异常管道:RuntimeException
4 catch 和 throws
异常处理只有两种方式:catch和throws,所以必须二选一
由于java语法本身的特点,需要开发者事先考虑异常如何处理,也就是我们常说的:"未雨绸缪"
对于初级开发者来说,我们可能会捕获,但不处理异常
try{
...
}catch(Exception e){
}
底层异常,应该向前抛到前面处理
经验少时,不知道该在什么位置捕获处理,应该选择throws
但是需要注意,在异常抛出时,有些异常比如运行时异常,可能并不会强制要求抛出此异常,调
用是也没有报错显示需要额外处理,这个时候就需要平时多积累,掌握良好的编码习惯了,手动添加
代码进行预处理,增强程序的健壮性了.
4.2
程序错误分为三种:
编译错误(checked异常);
运行时错误(unchecked异常);
逻辑错误
1.编译错误是因为程序没有遵循语法规则,编译程序能够自己发现并且提示我们错误的原因和
位置,这个也是在刚接触编程语言最常遇到的问题
2.运行时错误是因为程序在执行时,运行环境发现了不能执行的操作.
3.逻辑错误是因为程序没有安装预期的逻辑顺序执行.异常也就是指程序运行时发生错误,而异常处理就是对这些错误进行处理和控制.
其实可以手动针对逻辑错误执行一次抛出的动作,可以理解成方法return,只不过此处返回的是异常,构式:
if(逻辑错误有异常){
AException e = new AException("提示消息");
throw e;
}
4.3
throws 与throw的区别
throws
用在方法声明处,其后跟着的是异常类的名字
表示此方法会抛出异常,需要由本方法的调用者来处理这些异常
注意: 这只是一种可能性,异常不一定会发生
throw
用在方法的内部,其后跟着的是异常对象的名字
表示此处抛出异常,由方法体内的语句处理
注意: 执行throw一定抛出了某种异常