gpt4 book ai didi

c++ - 来自标准库调用的结构化异常 (SE)

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:35:32 28 4
gpt4 key购买 nike

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

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

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

最佳答案

Why would the C++ standard library not perform the most basic of argument checks (check for null-pointer)

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

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

关于c++ - 来自标准库调用的结构化异常 (SE),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5053395/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com