什么时候应该try{}catch(){}

xgy_p 2004-03-31 02:33:35
一直想不明白的一个问题是,在java中到处什么时候应该要try{}catch{},什么时候不用。一般情况下认为,如果某个类的某个函数会throw Exception,则应该要用到try...catch块。例如在JDBC中的DriverManager.getConnection,Connection.createStatement,Statement.executeQuery等等,这些函数当然要try...catch啦。但是有的时候,明明会throw Exception,但不用try...catch也可以编译通过,例如最明显的是Double.parseDouble(String),Integer.parseInt等等,查manual可以看出这些函数也会throws NumberFormatException。但居然不用try...catch也照样可以。谁能准确地告诉我在哪些时候应该用try...catch块,哪些时候不必使用。
...全文
89 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
xgy_p 2004-03-31
  • 打赏
  • 举报
回复
噢,我大概明白了。如果某个Exception是继承RuntimeException的子类,则不必try...catch都可以。如果不是,则必须要try...catch。明白。我想过两年再结贴,让更多的人发表一下见解先。
abswdy 2004-03-31
  • 打赏
  • 举报
回复
学习
darksmile 2004-03-31
  • 打赏
  • 举报
回复
Exception是在正常运行时可能抛出的异常。在一个完整的程序中应当被截获或者声明。
比如接受用户输入的数字并做除法运算。在正常运行时用户有可能输入一个不合法的数据,所以此时可以抛出Exception,同时应当声明或截获此异常。

RuntimeException是在正常运行是不可能抛出的异常。所以不需要截获或声明。
比如加载一个配置文件。在正常运行时如果由于某些原因,此文件被损坏或者丢失了,那么可以抛出RuntimeException,强迫整个程序终止运行。
设想一下,如果发现打开配置文件失败时抛出一个Exception。那么即使上级模块截获了此异常又能干什么呢?因为无法正确读取配置信息,整个程序依旧无法运行下去,只能打印错误信息并退出,这和不截获异常的结果是一样的。

一般来说:如果程序运行时抛出了RuntimeException,那么就应当修正程序中的bug或者检查运行环境。
jayde 2004-03-31
  • 打赏
  • 举报
回复
真是有心人,学习了
csw167 2004-03-31
  • 打赏
  • 举报
回复
up
新来的萌新 2004-03-31
  • 打赏
  • 举报
回复
学习!可能是异常的类型不同,学习!!有心人啊!
wuyue-tiger 2004-03-31
  • 打赏
  • 举报
回复
如果这个Exception继承于java.lang.RuntimeException就不需要try catch,因为这是运行时错误,一般来说这样的Exception只要保证输入是正确的,运行时不会出错,出错的原因都是运行时传入了不合法的数据所致

其它的Exception和Error如果能处理的话就try catch,如果程序对该例外无法预料或无法处理的话,可以将例外继续向外抛出

62,614

社区成员

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

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