百思不得其解。
这不是多余的吗? 脱开裤子放屁?
既然java有try{}、catch{} finally 、throw、throws, 这这些加在代码那里,还不如写严实一点代码啊? 为什么要用异常?
比如: 用户输入小于0的数字, 直接给个对话框,提示不能小于0不就OK了? 用得了,try{}、catch{} finally 不?
汗
比如当你看csdn论坛时,不论服务器维护,还是机房(及所有备份机房)海啸地震火山爆发了,又或者你的网线被小强啃了,其结果都是你无法登陆论坛了,这就是异常。此外还有一种叫错误(error),就是你连登陆论坛的机会都没有,因为你的浏览器打不开了。看评论很精彩。
也想说说自己对异常的看法:
1. 异常通常用于扑捉意外的错误,也就是编码所不能控制的错误,比如说数据库出问题连接不上了,文件找不到了,或者如楼上所言地震、火山神马的。
2. 通过抛出异常,可以把同类问题汇拢到一起统一解决,这样代码就更精简了。
3. 通过看异常栈,方便层层跟踪错误。
4. 提高代码的可读性,让我们把异常处理代码和普通代码分开。
5. 异常见名知意,看信息很容易知道产生异常的原因。
好吧。有些异常了我不想让用户看到个500页面。。程序能继续跑呢。又或者说这个异常不影响后面的程序运行只不过我想日志打印呢。你说的那个比如 其实是异常的烂用。
异常主要用来处理一些非正常的情况,比如 正连着数据库,可是数据库突然挂了。举个简单例子,从用户角度来讲,当后台程序出现异常,用户并不想看到异常栈信息,用户也看不懂,但我们可以通过捕捉该异常,对用户友好提示。吐槽前最好做好调查,异常不等于bug,异常处理和debug是两回事,另外一个程序不是一个人做的,一个程序员有可能并不知道当他遇到某个异常时,上层invoker要如何处理,所以他要做的只是通知上层他遇到了异常,由上层决定如何处理而且有些异常时你用的类库就抛出来的。。你要用要么捕获要么也继续抛。。这个不是你写的严谨就能控制的。这是增加健壮性 比如 为什么开车要买保险 谨慎点不就行了有些异常是预知不到的,就像连接数据库,谁敢保证100%能够连接上去,预知不到的就要捕抓他,不让程序因为异常而中断,是一种异常保护机制说实话,谁也不能保证万无一失。。即使是经验很丰富的程序员,也很难避免异常或者错误。。官方这么做是为了程序的稳定和健壮。楼主考虑的不是很周全。因为不是所有情况都像直接给个对话框那么简单。使用异常还可以把抛出异常的地方和捕获解决异常的地方分解开来,这是很重要的,因为抛出异常的程序员不一定知道应该如何解决异常