异常-笔记-01

Posted arvin09

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了异常-笔记-01相关的知识,希望对你有一定的参考价值。

一.使用try-catch捕获单个异常

如果异常出现的话,会立即终止程序,我们得处理异常:

1) :该方法不处理,而是声明抛出,由该方法的调用者来处理,(throws)

2) :在方法中使用try-catch的语句块来处理异常-

使用try-catch捕获单个异常:

语法如下:

try{

编写可能会出现异常的代码

}catch(异常类型 e){

处理异常的代码

//记录日志/打印日常信息,继续抛出异常

}

注意:catch 和try都不能单独使用

技术分享图片

 

 

二.获取和查看异常信息

1) :String getMessage(): 获取异常的描述信息,原因

2) String toString():获取异常的类型和异常描述的信息(一般不用)

3) :void printStackTrace():打印异常的跟踪栈信息并输出到控制台.不需要使用System

 

技术分享图片

技术分享图片

 

包含了异常的类型.异常的原因,还包括了异常出现的位置,在开发调试阶段,都得使用printStackTrace

现在在catch语句块中,必须写: e.printStackTrace(); 目的:查看异常的具体信息,方便调试和修改.

 

三.使用try-catch捕获多个异常

try{

编写可能会出现异常的代码

}catch(异常类型A  e){当try中出现A类型异常,就用该catch来捕获

处理异常的代码1

//记录日志/打印日常信息,继续抛出异常

}catch(异常类型B  e){当try中出现B类型异常,就用该catch来捕获

处理异常的代码2

//记录日志/打印日常信息,继续抛出异常

}

注意:代码在一瞬间只能出现一种类型的异常,只需要一个catch捕获,不可能同时出现多个异常. 

Exception放在最后

技术分享图片

 

 

四.保证关闭资源的finally代码块

finally语句块表示最终都会执行的代码, 无论有没有异常.

什么时候的代码必须最终执行

当我们在try语句块中打开了一些物理资源(磁盘文件/网络连接/数据库连接等).我们都得在使用完之后,最终关闭打开的资源,

finally的语法

1) : try........finally: 此时没有catch来捕获异常, 因为此时根据应用场景,我们会抛出异常, 自己不处理

2) : try.....catch .........finally: 自身需要处理异常, 最终还得关闭资源.

注意:finally不能单独使用.

 

当只有在try或catch中调用退出jvm的相关方法, 此时finally才不会执行,

否则finally永远会执行

System.exit(0)://退出jvm

--------------------------------------------------------------------------------------------

必须使用finally才能保证最终必须执行的代码

 

果finally有return语句,永远返回finally中的结果,避免该情况,

 

 六.异常的分类

1) : 编译时期异常,checked异常.在编译时期,就会检查,如果没有处理异常,则编译失败

2) : 运行时期异常,runtime异常,在运行时期, 检查异常,在编译时期, 运行异常不会编译器检测(不报错)

运行异常: 在编译时期, 可处理,可不处理.

如何确定某一个类是编译异常还是运行异常

返回错误结果-throw语句

抛出异常:

throw:运用于方法内部,用于给调用者返回一个异常对象,和returm一样,会结束当前方法

throws: 运用于方法声明之上,用于表示当前方法不处理异常,而是提醒该方法的调用者来处理异常(

(抛出异常)

//表示: 在本方法中不处理某种类型的异常, 提醒调用者需要来处理异常

:private static int divide(int num1,int num2) throws Exception

如果每一个方法都放弃处理异常,都直接通过throws声明抛出,最后异常会抛到main方法.

如果此时mian方法不处理,继续抛出给jvm,底层的处理机制就是打印异常的跟踪栈信息

runtime异常,默认就是这种处理方式.

技术分享图片

 

 

throw语句:

运用于方法内部,抛出一个具体的异常对象,

throw new 异常类(“异常信息”);终止方法.

throw:

一般的,当一个方法出现不正常的情况的时候,我们不知道该方法应该返回什么,此时就返回一个错误,

在catch语句块中继续向上抛出异常

return是返回一个值,throw是返回一个错误, 返回给该方法的调用者

 

微观上分析和理解框架各个模块的设计细节

宏观上分析和把控框架整体的设计思想

 

以上是关于异常-笔记-01的主要内容,如果未能解决你的问题,请参考以下文章

Spring学习笔记01_基础知识

机器学习笔记(十三)-异常检测

机器学习读书笔记01

Spring-AOP学习笔记-01 初识AOP

springmvc学习笔记(16)-异常处理器

C++学习笔记13--异常处理