【发布时间】:2023-04-01 11:17:02
【问题描述】:
我习惯了 Delphi VCL 框架,其中 TStreams 会在错误时抛出异常(例如,找不到文件,磁盘已满)。我正在移植一些代码以改用 C++ STL,并且已被 iostreams 捕获,默认情况下不抛出异常,而是设置 badbit/failbit flags。
两个问题...
a:为什么会这样 - 对于从一开始就包含异常的语言来说,这似乎是一个奇怪的设计决定?
b:如何最好地避免这种情况?我可以生成像我期望的那样抛出的 shim 类,但这感觉就像重新发明轮子。也许有一个 BOOST 库可以更明智地做到这一点?
【问题讨论】:
-
iostream 是 C++ 标准库的一部分,STL 是 C++ 标准库的子集,但 iostream 不是 STL 子集的一部分。
标签: c++ exception stl iostream