草庐IT

exceptionally

全部标签

c++ - __try/__except block 或 try/catch block 哪个更好用?

我想知道捕获我抛出的异常的更好方法是:它是__try/__exceptblock还是try/catchblock?我是用C++编写的,该程序只能在Windows上使用,所以可移植性不是问题。谢谢! 最佳答案 它们是两个非常不同的东西。try/catch是您熟悉的C++关键字。__try/__except用于捕获SEH异常。Windows本身引发的异常,例如DivisionByZero或AccessViolation。MSDNLibraryarticle中有详细描述。为它。您还可以使用它来捕获C++异常,因为它利用了WindowsSE

c++ - "We do not use C++ exceptions"- 有什么替代方案?让它崩溃?

"WedonotuseC++exceptions."如果不使用异常,出现错误时会发生什么?你就任由程序崩溃? 最佳答案 不,另一种方法是做人们多年来在C中所做的事情......您返回一个错误状态代码,指示函数是否成功,并且根据它可能失败的方式,您可能会遇到一个或多个输出参数,您可以在其中指示失败的方式(或者您将失败的类型合并到错误状态代码中,这也是逐案处理的事情)。 关于c++-"WedonotuseC++exceptions"-有什么替代方案?让它崩溃?,我们在StackOverflo

c++ - 为什么 C++ STL iostreams 不是 "exception friendly"?

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

c++ - 从 std::exception 继承的正确方法

我刚刚创建了异常层次结构并想将char*传递给我的一个派生类的构造函数,并带有一条消息告诉我出了什么问题,但显然std::exception没有允许我这样做的构造函数。然而,有一个名为what()的类成员表明可以传递一些信息。我如何(我可以?)将文本传递给std::exception的派生类,以便通过我的异常类传递信息,所以我可以在代码中的某处说:throwMy_Exception("Somethingbadhappened."); 最佳答案 我将以下类用于我的异常,它工作正常:classException:publicstd::e

c++ - 对于 "-fno-exceptions", "new T"会发生什么?

我想知道,如果我使用-fno-exceptions选项编译我的程序以禁用异常处理,newT是否仍会抛出bad_alloc?或者编译器(GCC和clang支持该选项)是否会将newT的使用隐式转换为new(nothrow)T? 最佳答案 按照我的理解,operatornew是由libstdc++定义的。如果您现在使用-fno-exceptions编译自己的代码,则无法捕获任何异常,但您仍将链接到会引发异常的普通版本的libstdc++。所以是的,newT会抛出异常,即使使用-fno-exception。但是,如果您也使用-fno-ex

c++ - 如果你在 "we don' t use exceptions”阵营,那么你如何使用标准库?

注:我不是在这里扮演魔鬼的代言人或类似的角色-我只是真的很好奇,因为我自己不在这个营地。标准库中的大多数类型要么具有可以抛出异常的变异函数(例如,如果内存分配失败),要么具有可以抛出异常的非变异函数(例如越界索引访问器)。除此之外,许多自由函数可以抛出异常(例如operatornew和dynamic_cast)。在“我们不使用异常”的背景下,您实际上如何处理这个问题?你想永远不要调用一个可以抛出的函数吗?(我看不出这会如何扩展,所以如果是这种情况,我很想听听您是如何做到这一点的)您是否同意标准库的抛出问题,并且将“我们不使用异常”视为“我们从不从我们的代码中抛出异常,也从不从其他代码中

javascript - 究竟什么会导致 "HIERARCHY_REQUEST_ERR: DOM Exception 3"-Error?

它与jQuery到底有什么关系?我知道该库在内部使用原生javascript函数,但每当出现此类问题时,它到底想做什么? 最佳答案 这意味着您尝试将DOM节点插入到DOM树中它无法进入的位置。我看到的最常见的地方是Safari,它不允许以下内容:document.appendChild(document.createElement('div'));一般来说,这只是一个错误,实际上是这样的:document.body.appendChild(document.createElement('div'));在野外看到的其他原因(从评论中总

exception-handling - Google Go 语言中的异常处理

我想知道...我前段时间读过有关Go的文章,并尝试在其中编写一些东西。我似乎很有趣。但我已经达到handling"exceptions"inthislanguage.我已经阅读了他们的方法,这似乎是合理的。我想知道标准异常方法相对于Go风格的优势是什么?有什么好处和坏处?编辑坦率地说:我不想对异常(exception)进行任何圣战。我只是想知道这种处理错误的方式是否有任何优势?与标准异常相比,这种风格的实际优势是什么?值得怀疑吗? 最佳答案 panic/recover在道德上等同于try/catch异常。存在表面差异(语法)和预期用

exception - Go vs. 中的 panic recover try catch 用其他语言

我刚刚阅读了thispost关于Go中的panic/recover,我不清楚这与其他主流语言中的try/catch有何不同。 最佳答案 panic/recover是功能范围的。这就像说每个函数中只允许一个try/catchblock,并且try必须覆盖整个函数。这使得以与java/python/c#等使用异常相同的方式使用Panic/Recover非常烦人。这是故意的。这也鼓励人们以设计使用的方式使用Panic/Recover。您应该从panic()中恢复(),然后将错误值返回给调用者。

python - Python中的"Inner exception"(带回溯)?

我的背景是C#,我最近才开始使用Python进行编程。当抛出异常时,我通常希望将其包装在另一个添加更多信息的异常中,同时仍显示完整的堆栈跟踪。在C#中这很容易,但是在Python中我该怎么做呢?例如。在C#中,我会做这样的事情:try{ProcessFile(filePath);}catch(Exceptionex){thrownewApplicationException("Failedtoprocessfile"+filePath,ex);}在Python中我可以做类似的事情:try:ProcessFile(filePath)exceptExceptionase:raiseExce