【发布时间】:2015-12-06 22:27:06
【问题描述】:
我有一个类foo(我无法修改)只有一个构造函数接受一个这样的参数:
foo bar("Hello!");
由于构造函数可以抛出错误,我想实现错误处理。我的第一次尝试是这样的:
try {
foo bar("Hello!");
}
catch {
cerr << "Something went horribly wrong...";
return -1;
}
但是,现在foo 在try 块的范围内,不能在其他地方使用。如果我理解正确,我不能在没有初始化的情况下声明一个对象,所以我可以在try 块之外声明bar。那么如何捕捉构造函数抛出的错误呢?
编辑:澄清一下,这是在我的main 中,而在catch 中我将中止程序。此外,参数是一个将被打开的文件,因此没有已知的安全输入永远不会引发异常。
【问题讨论】:
-
把所有相关代码放在try块中。或者在你在 try 块中调用的函数中。
-
有相关代码,是指使用对象的代码吗?那将意味着我的大部分程序。仅仅为了捕捉可能只在初始化期间发生的错误似乎有点过分?
-
好吧,您的大部分程序都可以包含在
main()函数中,对吧?那么为什么不将它包含在您放入 try 块中的另一个函数中呢? -
如果您的整个程序都依赖于
bar对象并且它无法构造,那么您确实遇到了一些问题。 -
@MSalters 是的,我愿意。所以在这种情况下,我将中止程序。很抱歉对此不清楚。
标签: c++ error-handling constructor try-catch