有没有办法静态检测一个类的任何成员是否可以抛出异常?一些元编程技巧?
答案 0 :(得分:2)
不,你不能(假设你想知道方法抛出异常)。程序员可以在方法声明中使用“throw”关键字,但它是可选的。因此,没有办法知道方法是否抛出异常。
答案 1 :(得分:0)
在C ++中,没有与Java中相同的已检查异常 因此,除非记录在案或您知道实现细节,否则无法知道方法是否抛出任何类型的异常 例如,只对内置类型进行操作的方法保证不会抛出任何异常 一个在声明中具有空掷规范的方法,它“说”它只会抛出致命错误的异常
int foo() throw(); //does not mean it will never throw an exception
通过new
运营商进行分配可能会引发异常
程序员有责任明确指定他的方法给出的无投掷保证。