为什么要处理掉异常

xqh2168 2009-08-25 10:51:14
java里面很多异常,编译时异常和运行时异常。

public class TestRuntimeExce {

public void testRuntime(){
System.out.println("abc");
}

public static void main(String[] args){
TestRuntimeExce tr = null;
try{
tr.testRuntime();
}catch(NullPointerException e){
}
}
}

上面这段代码把异常处理掉,我们就不知道出现空指针了。虽然NullPointerException是运行时异常,这里举个例子而已。

我想问:为什么要把异常处理掉,直接抛出异常,不是很好嘛?我们就可以知道哪里出错了。可是JAVA里面很多“被检查的异常”不得不处理。处理掉有什么好处?
...全文
188 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
lijing0511 2009-08-26
  • 打赏
  • 举报
回复
有异常往上抛给表示层给个友情提示,
要不然页面上一堆异常信息,给谁看
hiboys 2009-08-26
  • 打赏
  • 举报
回复
异常分2种 error 和exception,对于error我们一般中断程序。
对于exception异常处理时无非是2种方向:1.中断程序 2.偿试让程序再往下走。

提一小建议:javac 时多注意warning
hotleavegjz 2009-08-26
  • 打赏
  • 举报
回复
异常处理就是为了增加程序的健壮性.
比如: 程序的中使用的一个变量是由用户来输入的, 而前端的验证又没有检查出来, 这时如果没有异常处理, 这个异常会被抛出, 导致整个程序将停止.

如果有了异常处理, 可以反馈一个信息给用户, 提醒他他的输入数据有问题.

BTW, 你的那种办理异常的办法不太好, catch到异常后要做一些什么, 最基本的还要打印一下stackTrace呢.
jtzl 2009-08-26
  • 打赏
  • 举报
回复
up
java_object 2009-08-26
  • 打赏
  • 举报
回复
异常 如果你能处理 就必须处理,就像那么多 人犯罪,仅仅 送去 监狱是没有用的

有的时候 需要卡嚓 卡嚓 哈哈
sunnyfun888 2009-08-26
  • 打赏
  • 举报
回复
异常不是错误,是例外,错误需要纠正,例外需要处理,catch里什么都不做是大忌,至少也得记录下日志什么的。
justinavril 2009-08-26
  • 打赏
  • 举报
回复
处理异常其实是一个广义的概念,我们可以捕获异常,然后打印异常栈内的信息,虽然没有处理异常,但是有时候这些信息能够很快地帮程序员定位到出错的地方。

另外一点,处理异常是增强程序健壮性的一条重要手段。

另外纠正下楼主的表述,一般编译时的异常,不属于异常范围吧。异常应该还是限定在运行期来讨论的,因为编译期的异常,都有编译期来帮助程序员来发现了。
南南北北 2009-08-25
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 knightzhuwei 的回复:]
引用 4 楼 bigbug9002 的回复:
守望者,升星了,散分吧。

呵呵 低调低调~~还是低调些 恩恩
[/Quote]

那么鲜艳的星星,想低调也难啊...

答题:异常一定要处理.也可以向"上"抛,那么这个"上"就要处理这个异常.
举个例子:自定义一个异常UserPasswordException,查询数据库发现密码不正确,抛出此异常给servlet,servlet捕获此异常,返回给用户一个"密码不正确"的提示.
cwjieNo1 2009-08-25
  • 打赏
  • 举报
回复
恩,有问题需要得到解决·如果直接往上抛,那么调用者再往上抛,这样下去会崩溃的·
knightzhuwei 2009-08-25
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 bigbug9002 的回复:]
守望者,升星了,散分吧。
[/Quote]
呵呵 低调低调~~还是低调些 恩恩
xiaozejun 2009-08-25
  • 打赏
  • 举报
回复
异常肯定要处理掉
如果你不处理 直接往外抛
那么他是默认的子方法往主方法里面抛
主方法往Java虚拟机里面抛
那么所有的一场都往虚拟机抛
当很多很多的时候 虚拟机蹦了
thumb3344 2009-08-25
  • 打赏
  • 举报
回复
有了catch和throw的好处就在于总能找到一个适当地方来处理异常。
j2ee expert one 的那本书中提到的异常处里,是公认的经典。楼主可以看一下。
bigbug9002 2009-08-25
  • 打赏
  • 举报
回复
守望者,升星了,散分吧。
bigbug9002 2009-08-25
  • 打赏
  • 举报
回复
你那个不叫处理,叫"窝藏罪犯"。

如果捕获异常并处理之,表示这个异常到些为止了。一切都平静了。

如果捕获后不知道怎么处理,最好再抛出给上一层调用者。


knightzhuwei 2009-08-25
  • 打赏
  • 举报
回复
异常处理就是提供一条程序出错后重新返回正常运行状态的途径 有利于增加程序的健壮性 不至于动不动就崩溃掉
knightzhuwei 2009-08-25
  • 打赏
  • 举报
回复
要是抛出异常 程序就退出了 你想要是你开个日收入2400万的网站 平均每小时收入100万 它抛个异常整个网站就挂个三小时 这300万的损失谁来承担?

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧