如果我有下面的代码
istream in{filename}; // file name is file you want to open.
in.exceptions(ifstream::failbit | ifstream::badbit);
异常是否只查找failbit
和badbit
?如果它们只是简单地设置一个标志,不应该用clear(ifstream::failbit | ifstream::badbit)
来完成吗?另外,如果我使用这个方法,我应该用一个try catch来包围调用函数,否则异常会破坏代码?
1条答案
按热度按时间hjqgdpho1#
异常只查找故障位和坏位吗?
是的。对
exception()
的调用设置了一个内部成员。如果流的状态发生了变化,使得设置的标志与设置的异常标志相匹配,那么流将抛出一个异常。如果只是设置一个标志,不应该使用clear(ifstream::failbit)来完成吗|如果流::坏位)。
它树立了一个不同的旗帜。
基本上你有两个标志,
state
标志和exception
标志,当一个函数改变状态标志时,它也会和异常标志进行比较。你可以这样想。
此外,如果使用这个方法,应该用try catch将调用函数括起来
如果你想在本地处理异常(或者报告和错误),那么是的。
否则异常会破坏代码
分手这个词用错了。
如果你不处理一个异常并且它跳出了main,那么应用程序将会被终止,但这是一件好事。