码迷,mamicode.com
首页 > 其他好文 > 详细

异常-笔记-01

时间:2018-01-02 01:24:23      阅读:193      评论:0      收藏:0      [点我收藏+]

标签:应用   模块   get   默认   输出   资源   stack   class   调试   

一.使用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

标签:应用   模块   get   默认   输出   资源   stack   class   调试   

原文地址:https://www.cnblogs.com/arvin09/p/8169520.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!