java异常

来源:互联网 发布:app数据分析报告 编辑:程序博客网 时间:2024/06/14 14:41

异常

1.1异常体系的概述
程序运行过程中出现的问题有多种,将程序种出现的不正常的情况进行划分,简单划分为两大类
1.可以针对性处理
2.一般不针对性处理
Throwable 程序中所有的问题的父类
Exception 异常 可针对性处理
Error 错误 一般不针对性处理
Error和Exception子类都是以Error和Exception作为后缀

1.2异常的处理

try{    需要被执行被检测的代码(可能引发异常的代码)}catch(异常的类名 变量名){    对异常进行处理的代码}

执行流程: 如果try中代码没有异常,执行完try结构中的代码整个结构执行结束; 如果try中代码存在异常,catch可以捕获到异常 执行catch中对异常处理的代码,如果catch没有捕获到异常 程序会终止运行 打印异常信息.
getMessage()获取异常信息 获取默认处理异常中的冒号后面的部分
toString()获取异常的特定信息 获取异常的详细的类名以及异常的信息

1.3Throws
主要在函数上需要声明可能引发的异常 需要throws关键字进行标识访问修饰符 返回值类型 方法名(参数列表) throws异常类名,异常类名…{}

1.4异常的处理原则
1.在函数上声明异常时,应该声明更具体的异常 这样调用者可以根据声明的异常进行针对性处理
2.当函数中存在多个异常时,函数声明上需要通过throws声明多个异常,通过逗号,隔开;
一个try可以对应多个catch块 声明的多个catch对应捕获异常 如果catch块中需要定义Exception需要定义为最后一个catch
3.处理原则:抛出什么处理什么 抛出几个处理几个 不写多余处理 针对性

1.5异常的分类
1.受检异常(编译时期被检测的异常):Exception及其子类(不包括RunTimeException及其子类)
特点:编译器会对异常进行检查.如果当前没有对异常进行throws或者try-catch情况下代码会报错.IOException
2.非受检异常(编译时期不被检测的异常):RunTimeException以及其子类
特点:编译器不会对RunTimeException及其子类进行检测. 一般函数声明时如果存在运行时异常可以针对性声明,对于运行时异常来说 目的就是让代码运行停止 方便程序员修正代码.
实际开发过程中 需要处理的异常基本上都属于受检异常.

1.6自定义异常
在实际开发过程中, 有一些问题是根据项目的实际需求进行制定的, 在java体系中没有相应的描述. 这时需要自定义异常.
如何自定义?
声明一个类继承Exception或者其子类.
需求:算数运算中除数为负数则视为异常(可以练习一下)

1.7finally关键字

try{    需要被检测的代码(可能引发异常的代码)}catch(异常的类名 变量名){    对异常进行处理的代码}finally{    一定要执行的代码}