学习笔记之错误异常

错误:

代表JVM本身的错误,等于JVM的一个故障,不希望被捕捉,我们一般不能处理
必须修改源代码,程序才能继续执行 无法治愈的毛病
OutOfMemoryError内存溢出错误
不能抛出异常
必须修改代码

异常:

处理异常的方式是中断处理,产生异常就是创建异常对象并抛出一个异常对象,异常不是语法错误
可以被用户程序捕捉,可以被处理,常见异常NullPointer空指针异常 ClassCast类转换异常 IndexOutOfBounds索引越界异常 Arithmetic算术异常 整数除0 ClassNotFound找不到类
没有抽象方法的抽象类 NoSuchElement没有元素异常 Parse解析异常
Runtime运行期异常,java程序运行过程出现的问题
把异常处理掉,程序可以继续运行 小毛病
编译异常
处理异常两种:一:throws抛出异常,交给虚拟机处理:中断处理。 二:try catch

JVM检测出异常会做两件事:

1.JVM根据异常产生原因创建一个异常对象,这个异常对象包含了异常产生的(内容,原因,位置)
2.在方法中,没有异常处理逻辑try catch,那么久会把异常抛出给调用者main来处理异常。main收到异常也没有异常的处理逻辑,继续把对象抛出给main方法调用者JVM处理。

JVM接收到异常做了两件事,把异常对象(内容,原因,位置)以红色字体打印在控制台
JVM会终止当前正在执行的Java程序——中断处理。

throw关键字:

格式: throw new xxxException(异常产生的原因)
必须写在方法内部
new后后面必须是Exception或者是它子

throws关键字:

格式:修饰符 返回值类型 方法名(参数列表)throws AAAException,BBBException{
throw new AAAException(“产生原因”);
throw new BBBException(“产生原因”);
}

交给别人处理
当方法内部抛出异常对象的时候,我们必须处理这个异常对象
可以抛出给调用者处理(自己不处理,给别处理)。最终交给JVM处理,,中断处理,要么try catch
如果抛出多个对象,那么后面必须声明多个异常
如果抛出多个对象,他们有父子关系,声明父类即可
中断程序,后面的代码不再执行

try catch关键字

格式:
try{
可能产生异常的代码
}catch(定义一个异常的变量,用来接收try中抛出的异常){
异常的处理逻辑
一般在工作中,会把异常的信息记录到一个日志
} … catch(异常类名 变量名){
}

注意
1.try中可能抛出多个异常对象,那么就可以使用多个catch处理
2.如果try没有异常产生,那么就不会执行catch的逻辑处理,执行完try中的代码,继续执行try..catch之后的代码

Throwable类定义3个异常处理方法

String getMessage()返回此 throwable简短描述
String toString()返回此详细字符串(打印e默认是打印这个方法)
void printStackTrace()JVM打印异常对象,默认此方法,打印的异常信息是最全面的。

finally:
无论异常是否发生,都需要执行。一般用于资源释放(资源回收),最后都要资源释放
不能自己使用,必须和try一起

自定义异常类:

格式:public class XXException extends Exception|RuntimeException{
添加一个空参数的构造方法
添加一个带异常信息的构造方法
}
自定义异常类必须继承Exception或者Runtime
Exception,那么就是编译器异常,就必须处理,要么throws,要么try…catch
Runtime,那么就是运行期异常。无需处理交给JVM处理,中断处理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值