检测类型是否抛出

时间:2010-11-06 20:01:31

标签: c++ metaprogramming

有没有办法静态检测一个类的任何成员是否可以抛出异常?一些元编程技巧?

2 个答案:

答案 0 :(得分:2)

不,你不能(假设你想知道方法抛出异常)。程序员可以在方法声明中使用“throw”关键字,但它是可选的。因此,没有办法知道方法是否抛出异常。

答案 1 :(得分:0)

在C ++中,没有与Java中相同的已检查异常 因此,除非记录在案或您知道实现细节,否则无法知道方法是否抛出任何类型的异常 例如,只对内置类型进行操作的方法保证不会抛出任何异常 一个在声明中具有空掷规范的方法,它“说”它只会抛出致命错误的异常

int foo() throw(); //does not mean it will never throw an exception

通过new运营商进行分配可能会引发异常 程序员有责任明确指定他的方法给出的无投掷保证。