什么是更好的编码实践:如果我必须有一个try/catch块,我应该在这个块中放置一切(每次初始化等)还是只放置那些可能抛出的变量?这两种结构有什么不同?尝试全部或仅需要什么?
在例如:
具有:
struct A {
A();
int a;
int* b;
};
中的.cpp
和稍后:
A::A() {
a = 5;
try {
b = new int;
}
catch(...){
}
}
或
A:A() {
try {
a = 5; //this time in try block
b = new int;
}
catch(...) {
}
}
是有这两个构建体或是之间的任何差异这在某种程度上,如果我必须有一个try/catch块,我可能会永远放弃什么东西在里面? 谢谢。
P.S. 对于上帝efin的缘故,这里格式化让我真的很疯狂!而且我知道我多次提到过,我不会生气。
纠正我,如果我错了:唯一的区别是把a = 5;在try语句中,是吗? – dgraziotin 2010-01-31 20:33:00
我已经修复了格式并减少了垂直空白。格式化代码确实不是太困难 - 使用文本输入区域上方的代码格式化按钮。 – 2010-01-31 20:35:59
我想你只是说明一个例子,但除了在主要函数或析构函数中捕获所有元素并不是一个好主意。告诉读者你期待什么样的例外。一个catch(...)告诉读者,你不知道抛出了什么样的异常,或者没有任何异常应该逃脱。 – daramarak 2010-01-31 20:49:49