问题标签 [std-system-error]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
693 浏览

c++ - ios_base::failure 没有代码()

我尝试了cppreference.com的代码,但似乎e.code()不存在:

我的 g++-6.2 和 g++-5clang-3.9(在 linux 上)都说相同:

即使是未更改的示例也无法为我编译

我试过g++-6, g++-5, 添加-std=c++1y, -std=c++98, 相同的结果。(不过,我相信后者还可以)。

真的很奇怪,因为网站上的在线编译器确实会编译它。

我从-E(预处理器)运行中得到的单一提示:

这看起来好像failure确实不是源自system_error,这就解释了为什么没有code()。但为什么?它的普通 Ubuntu g++,它的 g++-6,它的 C++14 ......我没有编译器调整,链接,黑客......

好像有点用

在附近。但这会干扰吗?如果是这样,我该如何使它不受干扰?

有谁知道这里可能发生了什么?

0 投票
0 回答
363 浏览

multithreading - c++ async 有时会导致 std::system_error ,有时不会

我正在尝试从那里获取代码示例:

https://solarianprogrammer.com/2012/10/17/cpp-11-async-tutorial/

此代码导致:

我正在使用这些标志进行编译:

下面的代码会导致相同的错误(我们只是实例化了一些最小且未使用的对象):

最终得到类似的结果:

但这很好用(即按预期打印:0 2 4 ... 18):

nsp::Foo 现在在另一个库中定义/声明(但使用相同的代码)。该库在具有相同编译标志的相同 CMakeLists.txt 文件夹中编译。并且可执行链接到它。

到底是怎么回事 ?

0 投票
2 回答
525 浏览

c++ - std::error_code 是发出警告的好方法吗?

我目前std::error_code用来在出现问题时向我的 API 用户提供反馈。std::error_condition添加一个of 类型warning来通知我的用户存在一个小问题但操作将继续在语义上是否可以接受?还是我应该只为此使用日志记录?

0 投票
2 回答
950 浏览

c++ - 不确定的 std::system_error: what(): Operation not allowed

我正在尝试运行我的程序,并且在几次运行中出现错误:

我的代码在这里可用:https ://github.com/Qabrt/turnstiles

gdb 输出:

g++ --版本

我正在使用 -lpthread 标志进行编译:

如何获得有关该问题的更多信息?

0 投票
3 回答
119 浏览

c++ - `std::error_category` 如何在静态析构函数中安全使用?

考虑使用LLVMsystem_category实现编写的自定义错误类型以供参考:

现在想象以下std::error_code用于处理错误的简单类:

以下代码给出了报警输出

请注意如何my_error_category_type::message在被破坏的对象上调用!

我的问题是:

  1. 调用message这个被破坏的对象安全吗?
  2. 如果没有,有没有办法保持类别的生命周期?我可以以某种方式使对象不朽吗?
  3. 该标准是否对内置std::system_category()对象的生命周期等做出任何保证?我在上面链接到的 LLVM 实现遇到了完全相同的问题。
0 投票
0 回答
9 浏览

c++11 - 我应该努力在驱动程序包装代码中使用 std::system_error 吗?

std::system_error是:

当异常具有关联时,各种库函数(通常是与 OS 设施接口的函数...)引发的异常类型std::error_code,可能会报告。

现在,我正在编写一些与驱动程序交互的代码(实际上是一个库),该驱动程序返回它自己的错误代码(与 C 库不同errno)。

理论上,我可以std::error_category为这些写一个,并返回std::system_error没有错误号和适当类别的 's。

我的问题:我应该这样做,还是会侵入我应该远离的东西?(在后一种情况下,我只是滚动我自己的带有错误代码的异常类)

注意:与: C++11(或 Boost)system_error 策略有些相关