草庐IT

Try-catch

全部标签

c# - Try 不捕获 DllImport 函数中的异常

我从C#项目调用C++函数:[System.Runtime.InteropServices.DllImport("C.dll")]publicstaticexternintFillSlist(outstringslist);然后try{FillSlist(outslist);}catch{}C++dll受第三方工具保护,因此在真正执行FillSlist之前执行了一些代码。执行此第三方代码时发生了一些非常糟糕的事情,并且程序完全停止工作。“try”既没有隔离问题,也没有执行“AppDomain.CurrentDomain.UnhandledException”。有什么可以帮助将C++函数

c++ - 以下运行时错误是什么意思 : "terminate called without an active exception\n Aborted"

这个错误困扰了我大约两天:运行代码时出现运行时错误“在没有事件异常的情况下终止调用\n中止”,为什么?我尝试定位代码,发现该行可能是退出代码“xx=newint[num]”,我的测试用例中的num大约是640000(64MB内存到新)。当我将num设置为10时,没问题,但这次我的代码得到了错误的答案。我尝试删除所有的“try/catch”子句,但仍然有这个错误。另外我//所有调用“xx=newint[num]”子句的函数,错误依然存在,这次我定位代码可能退出是一个正常的“for循环”。所有情况都通过了编译器,你在运行代码时遇到过这个错误吗?谢谢!I//一些删除子句并得到以下错误:*检测

C++异常处理:如何使用try、catch、throw

一、概述在C++中,异常处理是一种重要的编程技术,用于处理程序运行过程中可能出现的意外情况。异常处理通过使用try、catch和throw关键字来实现。这些关键字共同协作,帮助程序员在发生错误时,更好地控制程序的流程,并优雅地处理错误。二、关键词解释1.throwthrow关键字用于抛出一个异常。当程序中出现某种异常情况时,可以使用throw关键字抛出一个异常。例如:throw"Filenotfound";2.catchcatch关键字用于捕获并处理异常。它通常与try块一起使用,以捕获try块中抛出的异常。例如:try{//somecodethatmaythrowanexception}ca

c++ - Google Mock 和 Catch.hpp 集成

我非常喜欢用于测试的catch.hpp(https://github.com/philsquared/Catch)。我喜欢它的BDD风格和它的REQUIRE语句,它的断言版本。但是,catch没有附带模拟框架。我正在处理的项目有GMock和GTest,但我们也在一些项目中使用了catch。我想将GMock与catch一起使用。我在宏FAIL和SUCCEED的catch.hpp和gtests头文件中发现了2个冲突。由于我没有使用TDD样式而是使用BDD样式,我将它们注释掉了,我检查了它们在catch.hpp的其他任何地方都没有被引用。问题:使用EXPECT_CALL()不会返回任何内容,

c++ - 为什么在 C++ 中使用 try 和 catch()?

我明白try和catch()用于异常处理,以防程序在某些情况下发生错误或崩溃。我也明白他们是如何工作的。但是为什么要用try和catch()?为什么不直接使用if()查找特定案例的语句,如果该案例为真,则执行cout? 最佳答案 异常处理:可以与没有机会返回单独错误代码的构造函数和运算符一起使用(它们可以将对象设置为某种错误状态——这意味着进一步的内存使用——但客户端代码也必须记住检查该错误稍后说明)例如:用户定义的类型-类X-支持符号x1=x2+x3-错误代码可以在哪里返回?可以在初始化列表中构造特定的类/结构数据成员时启动——避

c++ - 调用可以在 C++ 中抛出异常的函数的析构函数

我知道我shouldn't从析构函数中抛出异常。如果我的析构函数调用一个可以抛出异常的函数,我可以在析构函数中捕获它并且不再抛出它吗?或者它是否会导致中止,我根本不应该从析构函数中调用此类函数? 最佳答案 是的,这是合法的。异常不能从析构函数中逃逸,但无论在析构函数内部发生什么,或者在它调用的函数中发生什么,都由您决定。(从技术上讲,异常也可以从析构函数调用中逃逸。如果由于抛出另一个异常而在堆栈展开期间发生这种情况,则会调用std::terminate。因此它由标准,但这是一个真的坏主意。)

c++ - 仅当某个编译时表达式为真时才尝试 {.... } catch(..)

这是我们正在努力做的try{std::uninitialized_copy(...);}catch(...){if(!boost::has_trivial_destructor::value){//somecleanuptodohere...}throw;}如果if中的编译时常量为假,我们想知道try/catch是否有成本。编译器能否在其“as-if”权限内删除trycatch并表现得好像std::uninitialized_copy调用出现时没有try围绕它?或者是否有隐藏在C++规范中的东西要求编译器将它留在这里?例如,想象一个假设的surrounding_try_blocks()

c#monitor.exit in try/catch

我正在对旧源代码进行故障排除,并遇到了这样的声明:if(Monitor.TryEnter(lockObj)){try{//doessomethingif(failing_condition){Monitor.Exit(lockObj);thrownewException("Oops!");}catch(Exceptionex){throwex;}finally{Monitor.Exit(lockObj);}}}该代码正在用一个System.Threading.SynchronizationLockException:Objectsynchronizationmethodwascalledfro

C++ try-except 语句

我看到这篇关于检测VMWare或VirtualPC的文章http://www.codeproject.com/KB/system/VmDetect.aspx我看到他们使用某种try-except语句。所以我在MSDN中查找:http://msdn.microsoft.com/en-us/library/s58ftw19%28v=vs.80%29.aspx而且我不明白为什么我要使用try-except而不是旧的try-catch。它只是给我关于异常的额外信息吗?如果是这样,我可以在使用附件文章中的代码时使用try-catch,对吗?谢谢:) 最佳答案

java - FileOutputStream try-with-resources 不关闭文件描述符

我有一些代码可以将一些特定的大型(大约15k个条目)二进制序列化文件存档提取到磁盘上的文件夹。publicvoidextractExact(PathabsolutePath,DoubleConsumerprogressConsumer)throwsIOException{...//Extracttofilechanneltry(finalFileOutputStreamfos=newFileOutputStream(absolutePath.toFile())){PakExtractor.Extract(pakFile,Entry,fos.getChannel(),progressCo