gpt4 book ai didi

c++ - 在 main 中捕获 ifstream 异常

转载 作者:行者123 更新时间:2023-11-30 02:33:13 33 4
gpt4 key购买 nike

<分区>

我试图捕获在从 main 的类方法中读取文件时发生错误时抛出的异常。简化的代码是这样的:

#include <iostream>
#include <fstream>
#include <string>

class A
{
public:
A(const std::string filename)
{
std::ifstream file;
file.exceptions( std::ifstream::failbit | std::ifstream::badbit);
file.open(filename);
}

};

int main()
{
std::string filename("file.txt");
try
{
A MyClass(filename);
}
catch (std::ifstream::failure e)
{
std::cerr << "Error reading file" << std::endl;
}

}

我用以下代码编译这段代码:

 $ g++ -std=c++11 main.cpp

如果 file.txt 存在则什么也不会发生,但如果不存在,程序将终止并出现以下错误:

terminate called after throwing an instance of 'std::ios_base::failure'
what(): basic_ios::clear
zsh: abort (core dumped) ./a.out

但我希望代码能够捕获异常并显示错误消息。为什么它没有捕捉到异常?

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