【发布时间】:2017-07-03 04:35:38
【问题描述】:
我有一个可以在构造函数中抛出异常的类。我不知道拥有此类的代码,因此我无法更改此行为或向此类添加其他实例化或初始化方法。我需要在 main.js 中创建这个类的一个对象。这是否意味着我需要一个 main(),它主要由一个巨大的 try/catch 块组成,如下所示:
main()
{
try
{
A a;
...
}
catch(std::exception& e)
{
std::cout << e.what() << std::endl;
return EXIT_FAILURE;
}
return EXIT_SUCCESS;
}
如果这个 main 有数千行长怎么办?这个 try/catch 块很大。我觉得应该有更好的方法来做到这一点,但我想不出一个。
【问题讨论】:
-
"如果这个 main 有几千行怎么办?"那将是您的问题,而不是 try/catch 块。
-
用 try/catch 块包围这种可能失败(否则无法避免)的代码,而不是整个代码。您不需要依赖巨大的 try/catch 来处理项目中可能发生的任何错误,这也可能会捕获意外异常。
-
[main() 返回 int] main 中的 try-catch 块是(近乎普遍的)常见做法。 “...数千行长...”是恶毒的。
-
即使一个人容易产生数千行长的函数,那又如何呢?如果你有一个巨大的 try/catch 块,为什么这很重要?这并不像它需要额外的打字。除非您手动键入所有缩进。
-
main() 中的代码行数与您程序中的代码量几乎没有对应关系。您可以将 main() 重命名为其他名称,例如 main_inner(),然后在 main() 的 try 块中调用 main_inner()。
标签: c++ exception-handling main