使用iostream处理错误
Handling errors with iostream
我正在写2008年出版的[Bjarne_Stroustrup]Programming-Principles-and-Practice-Using-C++
书。Errors
章节使用std_lib_facilities.h
和error
函数。
示例:
if(x<=0) error("non-positive x");
if(y<=0) error("non-positive y");
int area1=area(x,y);
因为我使用的Visual Studio 2012没有std_lib_facilities.h
,这个错误处理程序不工作!什么是iostream
的错误处理功能,我在哪里可以找到和研究它?
c++标准库的头文件(iostream
, vector
等)末尾没有.h
。(然而,大多数第三方库确实使用.h
。)因为std_lib_facilities.h
确实有一个。h,所以可以合理地假设它不是一个标准库,也不是Visual c++应该提供的东西。
在这种情况下,快速的谷歌搜索显示它与您的书一起提供,并且可以从http://www.stroustrup.com/Programming/std_lib_facilities.h下载。
std_lib_facilities.h
是Bjarne Stroustrup编写的一个helper头文件。
它提供了最常见的标准头文件(在全局命名空间中)和最小的异常/错误支持。
你可以在这里找到它的快捷方式:标准库访问头
错误函数定义如下:
// error() simply disguises throws:
inline void error(const string& s)
{
throw runtime_error(s);
}
Visual Studio
在这里你可以找到一个关于如何让std_lib_facilities.h
在vs上工作的教程。
还有一个学生须知…
学生:请不要试图理解标题的细节然而。一切都会解释清楚的。这个标头的主要用途是不必一次理解所有的概念。
因为我使用的Visual Studio 2012没有"std_lib_facilities.h",这个错误处理程序不工作!是什么Iostream的错误处理功能,我在哪里可以找到和研究它?
std_lib_facilities.h头文件不是c++标准提供的。因此,你在VS2012中得到这样的错误。您需要编写自己的逻辑,并将其放入某个文件中,然后将其包含到程序中。
你可以自己实现error()函数的基本版本,如下所示:
#include<iostream>
template<typename T>
void error(const T& msg) {
std::cerr<<msg<<std::endl;
}
- 错误处理.将系统错误代码映射到泛型
- 通过错误处理,在C++中可靠地获得用户十六进制输入
- posix_spawn():使用posix_scawn()时的错误处理问题
- 在C++中样板"冷/never_inline"错误处理技术的最佳方法是什么?
- 关于 istream 中的错误处理的问题
- 程序使用的 C 库中的错误处理C++
- C++ 错误检查 fstream open() 命令和一般字符串流错误处理
- 使用std::tie进行类似golang的错误处理,同时返回结果,是否有缺点?(C++11)
- Boost进程"系统"功能中的错误处理
- RPN计算器c++错误处理和多个运算符
- 提升精神 x3 错误处理程序与期望
- 构造函数中的错误处理而不会失败
- 当 C++ 中函数参数的输入类型(类)错误时的错误处理
- 关于 ocilib 错误处理的问题,如何使用 ocilib 正确捕获日志错误?
- 我可以使用 std::optional 进行错误处理吗?
- C++ main() 末尾关于错误处理的错误
- 抽象包装带有异常的 C 错误处理的最佳方法
- vwprintf错误处理(ERRNO显示0)
- C++ 使用枚举进行错误处理
- 在 C++ 中创建自己的错误处理机制