gpt4 book ai didi

c++ - 纠正 C++ 中的异常

转载 作者:IT老高 更新时间:2023-10-28 12:47:55 27 4
gpt4 key购买 nike

我只是在学习如何处理我的 C++ 代码中的错误。我写了这个例子,它寻找一个名为 some file 的文本文件,如果找不到就会抛出异常。

#include <iostream>
#include <fstream>
using namespace std;

int main()
{
int array[90];
try
{
ifstream file;
file.open("somefile.txt");
if(!file.good())
throw 56;
}
catch(int e)
{
cout<<"Error number "<<e<<endl;
}
return 0;
}

现在我有两个问题。首先,我想知道我是否正确使用了异常。其次,(假设第一个是正确的)与 If else 语句相比,使用它们有什么好处?

最佳答案

“正确”是一种值(value)判断,但是(与其他类不同)异常类是一个单一的层次结构有一个主要好处,所以我通常建议抛出从 std::exception 派生的东西, 只是一个 int。

其次,不正确的文件名是否足以出乎意料地成为引发异常的充分理由,这一点值得商榷。

关于好处与 if/else 语句:有几个。首先,异常可以让您隔离处理错误的代码,因此代码的主要思想和可读性不会迷失在错误处理的迷宫中。其次,当你在抛出和捕获异常之间有好几层代码时,抛出异常的代码可能不知道应该如何处理它。例如,您的代码使用 std::cout 来报告问题——但大多数此类代码会在 std::cerr 上报告错误。您可以从一个更改为另一个,而无需对尝试打开文件的代码进行任何更改(可能位于库的深处,并且不知道该应用程序应该使用哪个代码 - 并且可能在应用程序中使用两者都是错误的,并且 MessageBox 是首选)。

关于c++ - 纠正 C++ 中的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2718779/

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