草庐IT

C++ 获取在 catch(...) block 中捕获的异常的描述

我可以得到一个被捕获的异常的描述catch(...)阻止?类似于std::exception的.what()。 最佳答案 你可以使用一个技巧:catch(...){handle_exception();}voidhandle_exception(){try{throw;}catch(conststd::exception&e){std::cout等等,你认为可能会抛出尽可能多的不同类型。如果您真的对可能抛出的内容一无所知,那么即使倒数第二个也是错误的,因为有人可能会抛出一个不指向以nul结尾的字符串的char*。抛出任何不是std:

C++ catch block - 通过值或引用捕获异常?

这个问题在这里已经有了答案:关闭9年前。PossibleDuplicate:catchexceptionbypointerinC++我总是按值捕获异常。例如try{...}catch(CustomExceptione){...}但我遇到了一些代码,它改为使用catch(CustomException&e)。这是a)好的b)错误的c)灰色区域吗? 最佳答案 C++中异常的标准做法是...Throwbyvalue,catchbyreference在继承层次结构面前,按值捕获是有问题的。假设您的示例有另一种类型MyException继承自

python - 多态异常处理 : How to catch subclass exception?

我有以下两个C++异常的简单层次结构:classLIB_EXPClusterException:publicstd::exception{public:ClusterException(){}ClusterException(conststd::string&what){init(what);}virtualconstchar*what()constthrow(){returnwhat_.c_str();}virtual~ClusterException()throw(){}virtualClusterException*clone(){returnnewClusterExceptio

python - 多态异常处理 : How to catch subclass exception?

我有以下两个C++异常的简单层次结构:classLIB_EXPClusterException:publicstd::exception{public:ClusterException(){}ClusterException(conststd::string&what){init(what);}virtualconstchar*what()constthrow(){returnwhat_.c_str();}virtual~ClusterException()throw(){}virtualClusterException*clone(){returnnewClusterExceptio

php - 在一个 catch block 中捕获多种异常类型

我想要一种更简洁的方法来获得以下功能,以便在一个block中捕获AError和BError:try{/*something*/}catch(AError,BError$e){handler1($e)}catch(Exception$e){handler2($e)}有没有办法做到这一点?还是必须分开抓?AError和Berror有一个共享的基类,但它们也与我想落入handler2的其他类型共享它>,所以我不能只捕获基类。 最佳答案 更新:从PHP7.1开始,此功能可用。语法是:try{//Somecode...}catch(AErro

java - 在 try catch 中使用 Throwable 和 Exception 的区别

这个问题在这里已经有了答案:WhycatchExceptionsinJava,whenyoucancatchThrowables?(14个回答)关闭7个月前。有时候,我明白try{}catch(Throwablee){}有时try{}catch(Exceptione){}有什么区别? 最佳答案 通过捕获Throwable,它包含了Error的子类。您通常不应该这样做,除非在您想要记录或以其他方式绝对处理所有可能出错的线程的最高“catchall”级别。它在框架类型应用程序(例如应用程序服务器或测试框架)中更为典型,它可以运行未知代码

c++ - ANSI C 等效于 try/catch?

我正在使用一些C代码,并且在代码运行时发现了错误,但对如何进行正确的try/catch(如在C#或C++中)知之甚少。例如在C++中我会这样做:try{//somestuff}catch(...){//handleerror}但在ANSIC中我有点迷茫。我尝试了一些在线搜索,但我没有看到有关如何实现它的足够信息/我想我会在这里问,以防有人能指出我正确的方向。这是我正在使用的代码(相当简单的递归方法),并希望使用try/catch(或等效的错误处理结构)进行包装。但是我的主要问题只是如何在ANSIC中进行try/catch...实现/示例不必是递归的。voidgetInfo(intoff

c++ - ANSI C 等效于 try/catch?

我正在使用一些C代码,并且在代码运行时发现了错误,但对如何进行正确的try/catch(如在C#或C++中)知之甚少。例如在C++中我会这样做:try{//somestuff}catch(...){//handleerror}但在ANSIC中我有点迷茫。我尝试了一些在线搜索,但我没有看到有关如何实现它的足够信息/我想我会在这里问,以防有人能指出我正确的方向。这是我正在使用的代码(相当简单的递归方法),并希望使用try/catch(或等效的错误处理结构)进行包装。但是我的主要问题只是如何在ANSIC中进行try/catch...实现/示例不必是递归的。voidgetInfo(intoff

ruby - 如何在没有 catch/try/raise 的情况下展开(多级返回)堆栈?

当catch/try不可用时,我想将堆栈展开到任意级别(即,我要展开的代码不在我的范围内)控制)。这可能吗?例如,在测试中,我想让我的测试调用一个方法来检查先决条件,如果不满足这些先决条件,则展开到测试的调用者(resumeatcaller[1])。由于测试工具不受我控制,我无法在适当的位置设置catchblock。 最佳答案 没有。多级返回的唯一其他机制是callcc,但这也需要在您无法控制的级别创建延续。也就是说,在Ruby中,没有什么是您无法控制的:您可以在测试框架中为该方法添加别名,并添加您想要的任何代码。

ruby catch 定义的类

在RubyGosu中构建瓷砖游戏或模拟总是让我最终得到一个所有可用瓷砖的列表,由他们的类(class)保存。例如[Pipe,PipeJunktion,Box,Pump]等等。每个类都在几个单独的文件之一中定义,这是我从主程序中需要的。现在,每次我向游戏中添加新图block时,我都必须自己将类添加到此列表中。我想知道是否有办法从文件中捕获所有加载类。类似的东西:allTiles=[]require_relative'tiles.rb'.each_class{|class|allTiles会很方便。还是可以通过某种方式使用模块来解决? 最佳答案