使用iostream处理错误

Handling errors with iostream

本文关键字:错误 处理 iostream 使用      更新时间:2023-10-16

我正在写2008年出版的[Bjarne_Stroustrup]Programming-Principles-and-Practice-Using-C++书。Errors章节使用std_lib_facilities.herror函数。

示例:

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;
}