x*******i 发帖数: 273 | 1 程序的结构层次比较多,很多exception从里面的层次扔出来,为了简化处理模式,我
就在最外层加try-catch. 组里的人review code的时候说这样不好,大家讨论一下自己
的code都是怎么做的? |
P********e 发帖数: 2610 | 2 里面出问题了,当然里面throw啊
【在 x*******i 的大作中提到】 : 程序的结构层次比较多,很多exception从里面的层次扔出来,为了简化处理模式,我 : 就在最外层加try-catch. 组里的人review code的时候说这样不好,大家讨论一下自己 : 的code都是怎么做的?
|
x*******i 发帖数: 273 | 3 里面当然throw了,问题是在那里try-catch. 我在最外层才try-catch, 这样的好处是
比较简单。但是有人的意见不同,认为要马上处理,在内部加try-catch. |
c*****t 发帖数: 1879 | 4 得看是什么 exception,同时该 exception 是否 violate 执行该 function
的 assumption 。
比如,某 function 的 assumption 是出问题 throw A。但是该 function
又执行其他 function (可能会出现 B exception)。这时候你得将所有
非 A 的 exception 给 catch 了,然后 wrap 到 A 里面(或者提供正确
的错误信息)。否则,很可能造成非常奇怪的 bug 。如果用的语言提供
checked + unchecked exception,要非常注意两个 exception 都得给
catch 住(以前碰到过别人的 code 里的这种 bug)。
有些情况是,该 function 明确的 assume 可能会出现 A,但是也可能会
有 B。这种情况下,该 function 可以不 catch B 。
【在 x*******i 的大作中提到】 : 程序的结构层次比较多,很多exception从里面的层次扔出来,为了简化处理模式,我 : 就在最外层加try-catch. 组里的人review code的时候说这样不好,大家讨论一下自己 : 的code都是怎么做的?
|
g*****y 发帖数: 7271 | 5 C++ 还是 Java ??
如果是 Java,并且有 resource leak,那就只能 catch 了
如果是 C++,就看你能不能处理这个exception了。能处理就catch之,不然就没必要了
。如果只是catch然后re-throw成好理解的错误,我觉得不需要在特别内部的地方做,
最多在很靠外围的大模块做一两级就了不得了。
【在 x*******i 的大作中提到】 : 程序的结构层次比较多,很多exception从里面的层次扔出来,为了简化处理模式,我 : 就在最外层加try-catch. 组里的人review code的时候说这样不好,大家讨论一下自己 : 的code都是怎么做的?
|
g*****y 发帖数: 7271 | 6 You can refer to this link for some C++ exception advice.
http://www.parashift.com/c++-faq-lite/exceptions.html
refer to section 17.12 & 17.13
【在 x*******i 的大作中提到】 : 程序的结构层次比较多,很多exception从里面的层次扔出来,为了简化处理模式,我 : 就在最外层加try-catch. 组里的人review code的时候说这样不好,大家讨论一下自己 : 的code都是怎么做的?
|
f**y 发帖数: 138 | 7 How do your code do clean up if the leaf of your code allocates objects from
the heap and you only catch the exceptions at the root? |
g*****y 发帖数: 7271 | 8 google raii (so-called Resource Acquisition Is Initialization)
from
【在 f**y 的大作中提到】 : How do your code do clean up if the leaf of your code allocates objects from : the heap and you only catch the exceptions at the root?
|