草庐IT

Try-catch

全部标签

java - 限制 try block 范围。有关系吗?

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:Shouldjavatryblocksbescopedastightlyaspossible?保持较小的tryblock大小是否有任何性能优势(特别是在C++或Java中)[除了它可以为读者提供更多关于哪个语句可以抛出的信息]。鉴于以下方法,我不想抛出该方法。voidfunction()throwsException{statement1statement2statement3//canthrowstatement4statement5}这样做更好吗:选项1voidfunction(){try{stateme

c++ - 函数 try block 处理程序是什么?

我最近遇到了这个问题-什么是函数tryblock处理程序?还有,它有什么用处? 最佳答案 Here你可以找到一个很好的解释。它在构造函数的初始化列表中可能很有用:structA{private:std::strings;public:A(intvalue)try:s(boost::lexical_cast(value)){}catch(boost::bad_lexical_cast){/*handlelexical_castexceptionhere*/}}; 关于c++-函数trybl

c++ - std::current_exception 是否应该从类的析构函数中的 catch block 返回非空

我和我的同事认为我们在VisualC++2012和2013中发现了一个错误,但我们不确定。以下代码中对std::current_exception的调用是否应该返回一个非空的exception_ptr?似乎在我们尝试过的大多数其他编译器上:#include#include#includeclassA{public:~A(){try{throwstd::runtime_error("ohno");}catch(std::exception&){std::clog在VisualC++下运行时,我们得到“0”(假,这意味着返回的exception_ptr为空)。其他编译器,例如g++,打印“

c++ - 通过 catch(...) 从 SEH 异常中获取有意义的信息?

早上好!编辑:这不是重复的,因为它专门与SEH有关,而不是代码级抛出的异常。我正在使用SEH来捕获一些不可靠的库抛出的硬件错误。我想从catchall异常中获取更多信息。下面的代码模拟了我在做什么。如您所见,我正在使用boost的current_exception_diagnostic_information,但它只是吐出“没有可用的诊断信息”。-不是很有帮助。是否有可能至少获得在未捕获异常的情况下本应返回的终止代码?(在本例中为0xC0000005,访问冲突)#include"stdafx.h"#include#include#includeintslowTask(){//simul

c++ - boost 测试 : catch user defined exceptions

如果我的代码中有用户定义的异常,我将无法进行Boost测试将它们视为失败。例如,BOOST_AUTO_TEST_CASE_EXPECTED_FAILURES(MyTest,1)BOOST_AUTO_TEST_CASE(MyTest){//codewhichthrowsuserdefinedexception,notderivedfromstd::exception.}我收到一条通用消息:Caughtexception:....unknownlocation(0):....它不会将此错误识别为失败,因为它不是std::exception。所以它不遵守expected_failures条款

单元测试覆盖范围RXJS.Observable.catch块

我正在尝试在类似于以下的代码块上获得单元测试覆盖范围,特别是调用一种方法来处理错误的捕获块:returnthis._http.get(/someurl).map((response:Response)=>{letresults=response.json();returnresults;}).catch(response=>{returnthis.handleError(response);});我尝试了这个:it('ShouldcallbasehandleErrormethodwhenanerroroccurs',fakeAsync(inject([MyService,MockBackend

c++ - 捕获所有异常和日志信息

我是一名使用C++代码的Java程序员,需要一些异常处理方面的帮助。我的代码结构如下:try{...}catch(...){log("Exceptionoccurred");}发生了异常,但tryblock确实很大,无法进行调试,因此我需要对代码进行最少的修改以提供有关异常的相关信息。所以我在现有的catchblock之前添加了以下catchblock(使用我的Java知识并引用C++指南):catch(exceptione){log(e.what());}但是,我仍然收到旧消息-“发生异常”。tryblock中的代码包含许多低级函数,如strncpy、memcpy等。为什么这个cat

c++ - 在 C++0x 中模拟 finally block

灵感来自theothertopic,我写了这段代码来模拟finallyblock:#include#includestructbase{virtual~base(){}};templatestructexec:base{TLambdalambda;exec(TLambdal):lambda(l){}~exec(){lambda();}};classlambda{base*pbase;public:templatelambda(TLambdal):pbase(newexec(l)){}~lambda(){deletepbase;}};classA{inta;public:voidstar

c++ - 关于 RAII,C++ `try`/`catch` block 是否与其他 block 相同?

好吧,如果我使用RAII习惯用法来管理某些上下文属性*,如果我在tryblock的开头直接使用它,它会像我预期的那样工作吗?换句话说,如果我有这个:structraii{raii(){std::cout……我成功地使用了它:{raiido_the_raii_thing;stuff_expecting_raii_context();/*…*/}...如果我这样做,RAII实例会以同样的方式工作吗:try{raiido_the_raii_thing;stuff_expecting_raii_context_that_might_throw();/*…*/}catch(std::except

c++ - 是否可以在 catch 子句中使用 co_await?

以下代码:try{throw42;}catch(inti){co_awaitsomefuture;}使用带有-fcoroutines-ts的clang6和7编译。但是,它不使用VisualC++15(2017)VisualC++16(2019)with/await编译,出现错误C2304:'co_await'cannotbeusedinsideofacatchblockC++20标准草案和cppreference似乎没有提及任何事情。它是Microsoft编译器中缺少的功能还是我误解了标准? 最佳答案 来自[expr.await],