当前位置:  开发笔记 > 编程语言 > 正文

在运行时提升异常

如何解决《在运行时提升异常》经验,为你挑选了1个好方法。

使用此代码:

#include 

#include 

using namespace std;

int main()
{
    std::ofstream ofs("c:\test");
    boost::archive::text_oarchive oa(ofs);
}

我在运行时在执行boost存档行时遇到未处理的异常:

boost::exception_detail::clone_impl >

dirkgently.. 6

以下行有误:

 std::ofstream ofs("c:\test");

如果你的文件被调用jest,编译器会发出警告(至少); 但是'\t'- 作为插入标签的逃脱,你的错误是未被捕获的.简而言之,不会创建该文件.您可以使用以下方法测试:

if (ofs.good()) { ... }

现在,由于未创建文件,因此您没有传递有效的迭代器来boost::archive::text_oarchive引发异常.

试试这个:

std::ofstream ofs("c:\\test");
//                  --^ (note the extra backslash)
if (ofs.good()) {
    boost::archive::text_oarchive oa(ofs);
    // ...
}

希望这可以帮助!

PS:最后我不能阻止自己制作 - 如果你要使用的话

using namespace std;

然后

ofstream ofs("c:\\test");

够好了.当然,合格并不是错误ofstream,但它不是最好的编码风格.但是,你知道使用using namespace是坏事,不是吗?

PPS:谢谢 - sharptooth提醒我,\t给你一个标签!



1> dirkgently..:

以下行有误:

 std::ofstream ofs("c:\test");

如果你的文件被调用jest,编译器会发出警告(至少); 但是'\t'- 作为插入标签的逃脱,你的错误是未被捕获的.简而言之,不会创建该文件.您可以使用以下方法测试:

if (ofs.good()) { ... }

现在,由于未创建文件,因此您没有传递有效的迭代器来boost::archive::text_oarchive引发异常.

试试这个:

std::ofstream ofs("c:\\test");
//                  --^ (note the extra backslash)
if (ofs.good()) {
    boost::archive::text_oarchive oa(ofs);
    // ...
}

希望这可以帮助!

PS:最后我不能阻止自己制作 - 如果你要使用的话

using namespace std;

然后

ofstream ofs("c:\\test");

够好了.当然,合格并不是错误ofstream,但它不是最好的编码风格.但是,你知道使用using namespace是坏事,不是吗?

PPS:谢谢 - sharptooth提醒我,\t给你一个标签!


您也可以使用c:/ test - 正斜杠在Windows和Unix系统上都可以作为路径分隔符使用,不需要引用.
推荐阅读
牛尾巴2010
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有