草庐IT

AmazonS3Exception

全部标签

c++ - 有没有 catch(...) 可以处理而 catch(exception& ex) 不能处理的异常?

我搜索了很多关于这两种类型的处理程序之间的区别,但每个人都说catch(...)是一个通用的处理程序,可以捕获所有内容。我找不到其中一个可以处理而另一个不能处理的异常。即使除以零,也会产生它们都无法处理的异常(浮点异常)。任何人都可以给我一个样本并清楚地解释它们的区别吗?我应该使用其中的哪一个? 最佳答案 Isthereanyexceptionthatcatch(...)canhandlewhilecatch(exception&ex)cannot?是的,任何不是std::exception或不是派生自std::exception的

c++ - g++ 在构建点云库时未定义对符号 '__cxa_free_exception@@CXXABI_1.3' 的引用

我在构建点云库时遇到了很多问题。我正在运行Ubuntu,我有3个版本的GCC和Clang(可能是问题所在)。我正在尝试使用与Ubuntu捆绑在一起的g++4.6来构建PCL,因为它似乎已经获得了我尝试过的最远的编译器。但是我有这个问题:>LinkingCXXexecutable../../bin/pcl_convert_pcd_ascii_binarycd/home/oni/Projects/pcl/build/io/tools&&/usr/bin/cmake-Ecmake_link_scriptCMakeFiles/pcl_convert_pcd_ascii_binary.dir/l

c++ - 反对异常(exception)

我的一个friend向我提出了这个问题。我被困住了,因为我不擅长使用异常。请记住,我们都在使用C++的工作环境中工作,但在C传统中进行错误处理。他的问题是这样的:函数A调用B,后者又调用C。C抛出一个异常,该异常的catchblock在A中。在调用C之前,在B中获取的资源会怎样?我们如何清理它们?我的回答是使用RAII。但即使我说了,我也知道这是行不通的。我们拥有以C模式编写的庞大代码库。我在代码中的任何地方都没有看到自动指针等。资源不一定包含在类中。即使是这样,在大多数情况下,析构函数也会留给编译器。简而言之,一切都是手动完成的。真正的问题是如何从C错误处理过渡到具有庞大代码库的异常

Exception in thread “main“ java.lang.NoClassDefFoundError

项目场景:验证继承情况下子类创建对象时,先调用父类的构造方法,再调用子类的构造方法问题描述随机(不同次数的测试下)会产生Exceptioninthread"main"java.lang.NoClassDefFoundError错误packageeverydayhomework;publicclassDay09{publicDay09(){System.out.println("父类的");}publicstaticvoidmain(String[]args){DAY03day=newDAY03();}}classDAY03extendsDay09{publicDAY03(){System.ou

c++ - 毫无异常(exception)地处理 STL 错误

我有一个经常使用STL的项目。现在我正在努力将项目移植到不支持异常的特定平台。我可以禁用异常,但我仍然需要处理STL错误。是否有任何方法可以在禁用异常的情况下正确处理STL错误?是否有任何第三方STL实现对此有帮助? 最佳答案 采用现有标准库容器并在禁用异常的情况下进行编译的问题在于,标准容器接口(interface)本身假定启用了异常。使用异常,如果operatornew无法获取内存,它将抛出异常,否则operatornew将返回0,std容器无法处理。一种方法是只使用STL算法+vector。您可以使用它复制其他容器大约95%的

c++ - 如果没有 uncaught_exception,C++ 析构函数中的异常

人们强烈反对从析构函数中抛出异常。取thisanswer举个例子。我想知道是否std::uncaught_exception()可用于可移植地检测我们是否由于某些其他异常而处于展开堆栈的过程中。我发现自己故意在析构函数中抛出异常。提及两个可能的用例:一些涉及刷新缓冲区的资源清理,因此失败可能意味着输出被截断。销毁持有std::exception_ptr的对象,该对象可能包含在不同线程中遇到的异常。简单地忽略这些异常情况感觉是完全错误的。并且有可能通过抛出异常,一些异常处理程序可能能够提供比析构函数本身写入std::cerr更有用的上下文信息。此外,为所有失败的断言抛出异常是我的单元测试

c++ - std::exception 使用来自本地对象的消息

以下代码是否安全地抛出带有自定义消息的异常?#include#include#include#includeintmain(){try{std::ostringstreammsg;msg对于VC++-2008这给出:exception:giveme5但现在我想知道为什么来自本地对象msg的消息“给我5”在catchblock中仍然可用?到打印消息时,流对象和临时字符串对象应该都被删除了吗?顺便说一句:这种为异常生成消息的方式似乎也适用于多个函数,并且如果在打印异常之前在catchblock中分配了新内存。或者是否有必要使用std::string成员定义自定义异常类,以便在打印之前安全地

c++ - 在析构函数中正确使用 std::uncaught_exception

有些文章的结论是“永远不要从析构函数中抛出异常”,“std::uncaught_exception()没有用”,例如:http://www.gotw.ca/gotw/047.htm(作者:赫伯·萨特)不过我好像没听懂。所以我写了一个小测试示例(见下文)。由于测试示例一切正常,我非常感谢您提出有关它可能有什么问题的评论?测试结果:./主要Foo::~Foo():caughtexception-buthavependingexception-ignoringintmain(int,char**):caughtexception:fromintFoo::bar(int)./main1Foo:

c++ - RAII 的有用性无一异常(exception)

我最近在c++中发现了RAII,大多数RAII的例子都在谈论异常安全。如何在抛出异常时始终释放资源。我的问题是,如果您没有打开异常,RAII是否值得。在我们公司,我们从事arm的嵌入式项目,默认情况下异常是关闭的,我们认为没有任何必要。谢谢大家的回答! 最佳答案 有异常(exception)的RAII基本上是一项要求。无异常(exception)的RAII意味着您可以将资源分配与代码结合起来以处置资源。这让您拥有具有多个导出点的函数,简化了析构函数的编写(RAII繁重环境中的析构函数通常为空或默认),可以简化对象分配和移动(再一次,

c++ - std::any 由 std::exception_ptr

可能我不是第一个发现std::exception_ptr可用于实现any类型(性能考虑被搁置)的人,因为它是可能是C++中唯一可以容纳任何东西的类型。然而,谷歌搜索并没有在这方面带来任何结果。有人知道以下方法是否已在任何地方使用过吗?#include#includestructWrongTypeError:std::exception{};classAny{public:templatevoidset(Tt){try{throwt;}catch(...){m_contained=std::current_exception();}}templateTconst&get(){try{st