try/catch在Java中使用块而不是使用多个If语句来检查用户输入是否更好,更便宜或更具可读性?
解析Date字符串时的示例,使用try/catch块直接解析而不是编写查找非法字符的多个语句不是更好.
在另一个例子中,假设我想要读取文件或流,而不是使用Scanner,我只是强制该方法并等待发生异常.
这是一种健康的编程方法吗?它在虚拟机上更便宜吗?
更新
这里是我在使用DateFormat异常时的意思的一个例子,有时它可能是一个真正的问题来捕获错误,并且这样做,你能保证你的复杂(通常是不可读)代码容易出错吗?
Rom*_*man 29
将异常用于流控制是一种不好的做法.
一些引言:
由于异常是为在特殊情况下使用而设计的,因此很少有JVM实现尝试优化其性能.创建,抛出和捕获异常通常很昂贵.
在存在不相关的错误的情况下,这个成语可以无声地失败并掩盖错误,使调试过程变得非常复杂.
更新:据说(我记得我在Josh Bloch的博客中也发现了相同的声明)使用流控制的例外就像使用GOTO一样.你可以阅读有趣的Dijkstra文章,了解为什么GOTO是坏的.
| 归档时间: |
|
| 查看次数: |
6730 次 |
| 最近记录: |