黑马程序员技术交流社区
标题:
java异常的作用
[打印本页]
作者:
壁虎
时间:
2013-3-23 16:25
标题:
java异常的作用
本帖最后由 tuo1254 于 2013-3-24 08:08 编辑
对异常,我一直不是特别理解,写程序时,我catch里面,不是打印此异常的信息,就是向外抛一个异常的对象。
最后的目的都是获取程序运行时发生异常的信息。然后根据提供给我的信息,去修正代码。我对异常的理解就是:
发现错误的理想时期是在编译阶段,也就是你在试图运行程序之前,然而编译期间并不能找出所有的错误,所以我们就需要用异常机制将错误源的适当信息传递给某个接收者
请问java的异常机制就只有这么一个作用吗?
作者:
张海洋
时间:
2013-3-23 16:38
这是我整理的笔记,希望有帮助!
异常就是程序中存在的问题
在java中程序出问题有两种情况下
Exception------->解决
Error----------->不能解决
Throwable 这是Exception与Error的父类
Throwable
|-----Exception
|-----Error
命名规范
所有异常都是使用Exception做为后缀
所有的错误都是使用Error做为后缀.
为什么使用异常
对一些情况我们可以使用if条件语句进行判断解决
存在的隐患,为什么还要使用异常?
1.我们使用异常,可以将我们程序中的逻辑代码与异常问题分离。
而使用if判断操作,是将逻辑代码与判断操作混到一起,
它会使用程序不清晰。
2.当我们完成某个操作时,这个操作是否执行成功了,我们需要根据执行成功与否
进行其它操作,但是这个方法它不能进行返回操作,那么这个时候就可以使用
异常进行处理。
Exception的处理方式 1.捕获 2.抛出
捕获
格式
try{
可能出现异常的代码块
}catch(异常类型 变量){
对异常进行处理.
}finally{
完成关闭动作(关闭资源)
}
如果出现异常,那么异常后面的代码不会被执行。
关于异常中常用的方法.
getMessage()
获取异常信息,返回字符串。
toString()
获取异常类名和异常信息,返回字符串。
printStackTrace()
获取异常类名和异常信息,以及异常出现在程序中的位置。返回值void。
异常处理 抛出
throws 异常类型1,异常类型2,...
写在方法上.
抛出是抛给了调用者,如果调用者也没有处理,继续抛出,那么最终就会
抛出给jvm。
什么时候使用捕获,什么时候使用抛出?
如果当前问题在方法内可以自己解决,那么我们就进行捕获。
如果解决不了,那么抛出给调用 者,让调用者解决。
异常分类
异常分为两种
1.编译异常
当我们对java文件进行编译时,就要求我们对产生的异常进行处理,
这种异常就是编译异常。
Exception类以及除了RuntimeException体系中的其它类都是编译异常。
2.运行异常
我们可以不用对其进行处理,如果出现问题,jvm会处理.
RuntimeException以及其子类都是运行异常
无论是编译异常还是运行异常,我们都可以人为的对其进行处理。
自定义异常
简单说就是自己做一个类去继承异常类。这就是自定义异常。
为什么要使用自定义异常?
在实际操作中,有些问题,不能使用jdk中提供的异常进行描述,
这个时候我们就可以自已定义异常来对其进行描述。
我们在使用自定义异常时会使用一个关键字 throw
throw作用是抛出异常对象。
作者:
刘凯
时间:
2013-3-23 16:46
我的理解是
实际的开发中,异常不是说每次运行的时候都会出现,在程序员编写代码的时候,很可能有些问题考虑的不是很周到,后者说,感觉某种异常的情况出现的概率不是很大,所以为了程序的简洁,一些小概率的事件不去做处理,或者是疏忽了一些事件,而之一段代码可能在这个小概率的事件下发生异常,所以我们用catch的方法将异常捕捉下来,然后自定义这个异常出现的动作,比如将异常出现的位置,时间,等写到一个异常日志里,以便于程序员查看这些异常日志,如果发现这个异常出现概率比较高 那么就去考虑程序的优化,更新代码来处理这个事件,我感觉 我们平时用的一些软件不断升级来修补BUG 就是在对程序不断优化 ,
当然 这个异常机制还可以用到很多别的方面,比如这个异常出现了,是重新启动程序,还是直接关闭,还是弹出对话框提示用户 等等 。。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2