我有一个类,叫做A
,它的构造函数需要一些输入参数,并且如果这些参数不适合构造该对象,则可能会抛出异常。在我的main
代码中,我按照以下方式构造了一个A
类型的对象:
A my_obj(arg1,arg2,arg3);
然后使用它。显然,如果构造函数失败并抛出异常,程序的执行将在打印“未处理的异常”消息后终止。
但是,在这种情况下,我希望向用户提供更多信息,告诉他/她为什么抛出了exception
。所以,我需要一种方法来catch
这个异常。
为此,一种可能性是将从声明my_obj
开始到程序结束的整个代码包含在try
块中,并在之后catch
异常:
try {
A my_obj(arg1, arg2, arg3);
// ...
// about 100 other lines of code being executed if my_obj is created properly
}
catch (std::exception& e) {
// print a user-friendly error message and exit
}
但是在我看来,这似乎有点“过度杀伤力”。特别是因为在剩下的100行中没有抛出任何其他异常。有没有其他更好的方法来完成这个任务呢?
my_obj
,但如果在其构造过程中抛出异常,则不能这样做。外观漂亮是次要的 - 定义良好的行为是首要的。 - Scheff's CatA my_obj
的作用域。(它在catch
之前结束。您的指针方法仅在使用new
构造A
时有效。...(正如 @AndreKampling 的答案中所建议的那样)。 - Scheff's Cat