关于函数有一个 try-catch 的处理,我认为有时候会非常有用:
bool function()
try
{
//do something
}
catch(exception_type & t)
{
//do something
}
首先要回答的问题是:这种风格在一般情况下是否被认为是不好的?
我用一个具体的例子来说明:
我们有一个使用C和C++编写的项目。在项目中,我们定义了自己的异常类型(不是继承自std::exception的)。我需要集成XML库并将所有异常转换为我们自己的异常类型。因此,基本上最后一步就是捕获来自XML库的所有异常并进行转换。
函数之前的代码:
bool readEntity(...)
{
while(...)
{
if(...)
{
//lot's of code...
}
}
}
之后:
bool readEntity(...)
try
{
while(...)
{
if(...)
{
//lot's of code...
}
}
}
catch(XMLBaseException & ex)
{
//create our exception and throw
}
我的想法是:我清楚地表达了将所有派生自一种类型的异常转换为自定义类型,并且保持我们的屏幕没有水平滚动条(因为水平滚动条很糟糕)。
然而,在代码审查期间,我的这种方法被批评为不够明确。
所以我想听听您的想法。
更新: 仅仅为了明确:重构函数不是一个选项。而且实际上它写得很好。