黑马程序员技术交流社区

标题: RunTimeException异常和其他异常区分问题 [打印本页]

作者: 黄奕豪    时间: 2012-5-16 00:26
标题: RunTimeException异常和其他异常区分问题
在毕老师的视频里面RunTimeException异常基本上懂了!但是我觉得毕老师说的有点让人茫然,不知道我这样子理解会不会简单点,RunTimeException异常不用声明也不用捕抓处理,是程序员应该改正的错误,必须要通过修改代码来进行避免,否则程序终止,所以最终程序完成的时候这类异常是完全不会出现的!到这里我就茫然了!如果是这样的话,为什么不把所有的异常都改成这种继承RunTimeException的异常,这样都由程序员来把所有问题都解决了,这样的程序不就是完美的了么?我就是在这个问题上想不清,所有还望大家提点一下!!!先谢过了!!
作者: Fc10232    时间: 2012-5-16 00:27
{:soso__6235880048239246314_3:}
作者: 云惟桉    时间: 2012-5-16 01:35
纠正一下,是RuntimeException
另外,我觉得楼主别想这么多。我和楼主分享一句我导师的箴言:
在一个计算机系统中,错误的情况比正确的情况往往多得多,这是由人的需求决定的。
你的需求越精准,排除在你需求之外的事件越多。那么,不符合你的需求的情况就越多。

可能这有点拗口。但是的确是这样的。我们编程过程中也有很多异常,这样的异常时不计其数的,只要不符合我们对程序的要求,都可以成为异常。
那么,这样程序员在编写代码的时候,花费在异常处理的精力就会比用在其他方面的要多,那编程的过程可想而知是多么艰难。
java语言规定的异常,很好的限定了我们对java的使用,让编写更有准则,更有秩序。
并且把出现的错误分类,使得解决的方式也更加系统和便捷。这是我觉得比C++要好的地方。

如果就像楼主说的都是RuntimeException,那么几乎和没有定义异常一样,统一由程序员处理。
我不敢想象如果这样,我还能对java有这般兴趣了。呵
作者: 潘东升    时间: 2012-5-16 04:21
本帖最后由 潘东升 于 2012-5-16 04:32 编辑

“所以最终程序完成的时候这类异常是完全不会出现的”,并不是不会出现,这里说的是设计使用者在规范使用的时候不会出现异常,RuntimeException是运行时异常,也就是使用者在运行时的错误操作造成的,比如视频里面讲的传入错误参数,导致程序无法继续运行或往下的运行结果无意义,而这种错误操作是使用者本身造成的,当然只能由使用者自身去修改,所以此时程序应该抛出异常并终止程序运行。打个比方,使用手机,乱按号码,当然无法正常拨号连接了,而手机本身没有问题,所以问题就出在使用者的错误操作上,这是设计手机的人不能处理的,所以只能是使用者规范使用手机拨号操作才能正常使用手机的拨号功能。主要是你把程序设计者和程序使用者搞混为是同一个程序员
作者: 黄奕豪    时间: 2012-5-16 09:56
云惟桉 发表于 2012-5-16 01:35
纠正一下,是RuntimeException
另外,我觉得楼主别想这么多。我和楼主分享一句我导师的箴言:
在一个计算 ...

呵呵,谢谢您的纠正,现在打英文都是习惯碰到单独的字就头字母大写了!!我昨晚回想了一下,好像也确实如此,程序本来就是作为要实现用的,如果实现代码不及处理异常代码的十分之一,那感觉代码确实是太胖了~~~~
作者: 黄奕豪    时间: 2012-5-16 10:00
潘东升 发表于 2012-5-16 04:21
“所以最终程序完成的时候这类异常是完全不会出现的”,并不是不会出现,这里说的是设计使用者在规范使用的 ...

哈哈,好像我确实是把程序设计者和程序使用者混杂了!!感觉设计异常机制的人真不简单!!谢谢!!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2