c++ - 如果我在转换中丢失数据,我可以在 C++ 中引发异常吗?

标签 c++ visual-studio exception

我正在开发一个遗留的 C 产品,它有很多转换和潜在的数据丢失——从 int 到 short 类型的转换。在 Visual Studio 中,如果发生这种数据丢失,是否有办法导致异常,或者我是否需要用断言填充我的代码?

最佳答案

C++ 的语言特性不支持在有损转换时抛出异常。如果您使用大括号初始化,从 C++11 开始,编译器需要让您知道可能缩小的转换,但这并不意味着转换正在缩小在实践中(即在运行时).

解决此类问题的最佳方法是编写自己的库来执行此操作,或者使用已经存在的库,例如 SafeInt .

关于c++ - 如果我在转换中丢失数据,我可以在 C++ 中引发异常吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25256436/

相关文章:

关于尾随字符的 Android 计费异常

c++ - #include <bits/stdc++.h> 如何在 C++ 中工作?

C++ constexpr 计数构造函数调用

c++ - 共享库中的静态类成员

c++ - FillConsoleOutputCharacter/WriteConsoleOutput 和特殊字符

c - 相当于 Windows 中的 "sysconf(_SC_CLK_TCK)"

c++ - 如何在通过 .def 文件导出函数时使用 dllImport 导入函数?

c++ - 通过删除复制构造函数等按值(无指针)在 C++ <vector> 中存储具有相同基类的对象

java - 使用 Java-8 时可变参数中的 ClassCastException

java - 为什么不推荐错误处理?