c – 使用Define定义抛出异常

目前,我正在重构一些由我们的前工作人员撰写的旧项目.我遇到了使用define包装抛出异常.

像这样的东西:

#define THROWIT(msg) throw common::error(msg)

代码示例:

#define THROW_FD_ERROR( fd, op )\
throw common::error_fd( errno,\
    __ERR_FD_API_3\
    .arg( fd )\
    .arg( op )\
    .arg( strerror(errno) ),\
    __FILE__,\
    __LINE__ )

我可以看到它的一些好处,但它们对我来说不是那么大,以这种方式做到这一点.
无论如何,这是一种常见的技术吗?
在您看来,从中可以获得哪些优势?
您是否使用定义来抛出异常?
如果是的话是什么目的?

UPD:从代码中添加define

UPD2:谢谢大家的回答.我决定取出所有的宏.为了进行debuging,我将使用backtrace信息扩展基本错误类,在我看来,它比仅使用文件和行的标准定义更好.

解决方法:

通常,仅在需要预处理器特定功能(如__FILE__或__LINE__)时才使用预处理器.这个宏没有做什么功能,因此它非常非典型和坏.

上一篇:Throw与Throw ex区别,记录日志的方法


下一篇:C++中的异常处理