标准库调用的结构化异常(SE)

时间:2011-02-19 20:43:01

标签: c++ exception crt seh structured-exception

我有调用:: fgetpos的代码,导致无法捕获的内核异常(我在VS 2008项目中有选项/ ehs)。但我不禁认为标准库例程应该从不抛出这些异常。

更新:我试过调用:: fgetpos(0,& foo),这显然是错误的,我确实收到了内核级异常。我很困惑。为什么C ++标准库不执行最基本的参数检查(检查空指针)并引发std :: invalid_argument?

是否有任何标准库例程执行此类基本检查,或者它们是否都快乐地导致程序终止?

1 个答案:

答案 0 :(得分:1)

  

为什么C ++标准库不执行最基本的参数检查(检查空指针)

因为如果你需要检查,你可以自己做。 C ++的哲学是你不需要付出你不需要的东西。如果我是一个聪明的程序员并且永远不会将无效的参数传递给函数,为什么我的程序性能可能会受到不必要的检查?

这就是为什么std::vector同时提供operator[]at()的原因,后者执行边界检查而前者不执行。如果您需要检查,请添加它。