C++提供了用于检查异常的语法,例如:
void G() throw(Exception);
void f() throw();
然而,Visual C++编译器并未检查它们;抛出标志被简单地忽略了。在我看来,这使得异常功能无法使用。因此我的问题是:有没有一种方法可以让编译器检查异常是否被正确捕获/重新抛出?例如使用Visual C++插件或不同的C++编译器。
顺便说一下,我希望编译器能够检查异常是否被正确捕获,否则你最终会陷入一个境地,即必须在每个函数调用周围都放置一个catch语句,即使它们明确声明不会抛出任何异常。
更新:当在一个带throw()标记的函数中抛出异常时,Visual C++编译器会显示警告。这很好,但遗憾的是,当调用可能会抛出异常的子例程时,警告不会出现。例如:
void f() throw(int) { throw int(13); }
void h() throw() { g(); } //no warning here!