我在一个大型项目中读取代码,其中包含许多代码,例如:
try
{
}
catch(...)
{
}
Run Code Online (Sandbox Code Playgroud)
从字面上看,在"捕获"之后的括号中,其中有"......".不像"例外e".
这让我有点担心.这种做法是好还是安全?谢谢.
Jam*_*lis 11
不,这是一种可怕的做法.
如果你catch(...),你不知道你抓到了什么.它捕获所有C++异常(在某些平台上有一些设置,它也捕获其他异常,如Visual C++中的结构化异常).
如果你不知道抛出了什么异常,你就不知道系统的状态是什么:你怎么知道程序继续运行是否安全?
退出catch(...)块绝对安全的唯一两种方法是终止程序或重新抛出异常(使用throw;).如果您在抛出异常时需要执行一些清理但不能依赖析构函数,则后者偶尔会有用.
| 归档时间: |
|
| 查看次数: |
981 次 |
| 最近记录: |