草庐IT

catching

全部标签

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会很方便。还是可以通过某种方式使用模块来解决? 最佳答案

ruby - Gem 更新系统 - 带 302 重定向的 Catch 22

如果我尝试在我的服务器上安装任何gem,那么我会得到一个302重定向,例如geminstallclickatell-VGEThttp://rubygems.org/latest_specs.4.8.gz302FoundHEADhttp://rubygems.org/specs.4.8.gzconnectionresetafter2requests,retryingHEADhttp://rubygems.org/specs.4.8.gz302Found一篇关于ruby​​gems的文章建议做一个gemupdate--systemhttp://help.rubygems.org/kb/ru

c++ - ex.what() 嵌套 try-catch 的变化

我有一个嵌套的try-catch代码,如下所示:voidA(){try{//CodelikeA=string(NULL)thatthrowsanexception}catch(std::exception&ex){cout运行后我得到了这个结果:inA:basic_string::_M_constructnullnotvalidinB:std::exception如您所见,ex.what()在函数A中工作正常并告诉我正确的描述,但在B中ex.what()告诉我只是std::exception。为什么会这样?我是否在函数A的catch子句中抛出了一些不同或错误的东西?如何抛出嵌套异常,以

c++ - ex.what() 嵌套 try-catch 的变化

我有一个嵌套的try-catch代码,如下所示:voidA(){try{//CodelikeA=string(NULL)thatthrowsanexception}catch(std::exception&ex){cout运行后我得到了这个结果:inA:basic_string::_M_constructnullnotvalidinB:std::exception如您所见,ex.what()在函数A中工作正常并告诉我正确的描述,但在B中ex.what()告诉我只是std::exception。为什么会这样?我是否在函数A的catch子句中抛出了一些不同或错误的东西?如何抛出嵌套异常,以

c++ - 为什么 try..catch block 需要大括号?

虽然在if...else等其他语句中,如果block中只有一条指令,您可以避免使用大括号,但您不能使用try...catchblock来做到这一点:编译器不会购买它。例如:trydo_something_risky();catch(...)std::cerr使用上面的代码,g++只是说它在do_something_risky()之前需要一个“{”。为什么try...catch和if...else之间的这种行为差异?谢谢! 最佳答案 直接来自C++规范:try-block:trycompound-statementhandler-se

c++ - 为什么 try..catch block 需要大括号?

虽然在if...else等其他语句中,如果block中只有一条指令,您可以避免使用大括号,但您不能使用try...catchblock来做到这一点:编译器不会购买它。例如:trydo_something_risky();catch(...)std::cerr使用上面的代码,g++只是说它在do_something_risky()之前需要一个“{”。为什么try...catch和if...else之间的这种行为差异?谢谢! 最佳答案 直接来自C++规范:try-block:trycompound-statementhandler-se

c++ - 函数的 try-catch 语法之间的区别

我最近在try-catchforfunction中遇到了这种语法。structA{inta;A(inti):a(i)//normalsyntax{try{}catch(...){}}A()//somethingdifferenttry:a(0){}catch(...){}voidfoo()//normalfunctiontry{}catch(...){}};两者syntaxarevalid.除了编码风格之外,这些语法之间是否有任何技术差异?其中一种语法在任何方面都优于其他语法吗? 最佳答案 第一个语法:tryblock的范围在成员初

c++ - 函数的 try-catch 语法之间的区别

我最近在try-catchforfunction中遇到了这种语法。structA{inta;A(inti):a(i)//normalsyntax{try{}catch(...){}}A()//somethingdifferenttry:a(0){}catch(...){}voidfoo()//normalfunctiontry{}catch(...){}};两者syntaxarevalid.除了编码风格之外,这些语法之间是否有任何技术差异?其中一种语法在任何方面都优于其他语法吗? 最佳答案 第一个语法:tryblock的范围在成员初