草庐IT

objc_exception_throw

全部标签

c++ - 无法通过引用 std::exception 捕获从 std::exception 派生的类

我创建了一个派生自std::exception的自定义异常类。#includeclassException:std::exception{public:constchar*what()constnoexceptoverride{return"test";}};intmain(){try{throwException();}catch(std::exception&e){std::cout此程序在Ubuntu上由g++-stdc++=17编译时,导致异常未被catchblock捕获,即使按引用捕获也应该捕获派生异常。它调用std::terminate,即使它发生在通过引用捕获其基类的tr

c# - 什么是异常(exception)?

我们每天都在谈论异常处理。我们都知道它是在执行过程中遇到一些意想不到的情况而产生的。这里有几个问题:什么是异常?它最低级的内存组成是什么?在.NET中,我可以将其视为某种异常类型的对象实例。在本土世界,它是由什么制成的?一些数据结构?如果程序员没有明确抛出异常,那么谁来创建异常,如下面的代码所示?它是某些语言运行时提供的支持的一部分吗?SomeExceptione=newSomeException();扔e;异常工作范式是什么?当发生某些错误时,语言运行时会创建相应数据结构/类型的实例来表示错误的详细信息,这是真的吗?我们如何知道运行时所有可能的意外情况,从而创建足够的异常数据结构/类

C++ 我需要为一个函数到处写 throw 子句吗?

之前考虑有一个类和一个全局函数:例如,usefulfuncts.hppvoiddosome(inta,intb)throw(std::exception);这是usefulfuncts.cppvoiddosome(inta,intb)throw(std::exception){//...}这是aclass.hppclassaclass{//Members...friendvoiddosome(inta,intb)throw(std::exception);//Members...};之后(我想要的)好的!我想了解是否有必要每次都编写throw子句。例如,我可以这样做吗?这是useful

c++ - 为什么 C++ std::exception::what 成员常量?

我很好奇为什么std::exception::what成员函数是const?classexception{public:exception()throw(){}virtual~exception()throw();/**ReturnsaC-stylecharacterstringdescribingthegeneralcause*ofthecurrenterror.*/virtualconstchar*what()constthrow();}; 最佳答案 调用what()成员函数不应修改exception对象的可观察状态。通常,异常

c++ - 除了重新抛出 std::exception_ptr 之外,我还能做什么

我有一个std::exception_ptr类型的对象,我想在它上面调用what(),但似乎没有办法做到这一点(如本答案中所述:HowdoImakeacalltowhat()onstd::exception_ptr)。在互联网上搜索后,似乎除了重新抛出它并在std::exception&中捕获它之外我无法对它做任何事情。这对我来说有点奇怪,但我想检查一下:std::exception_ptr可以做什么,然后重新抛出它以获得期望的细节?C++14或其他版本的C++有什么变化 最佳答案 不幸的是,没有。该标准仅保证std::except

c++ - 调试 'terminate called after throwing an instance of ...' ,当异常_should_ 被捕获时

我正在调试一个似乎只发生在Solaris上的问题(我们在Windows、Linux、OSX、Solaris、HP-UX和AIX上进行测试)。我们的代码抛出一个异常(这完全是预料之中的),这导致打印出“在抛出...的实例后调用终止”消息,并终止进程。(dbx)where-hcurrentthread:t@1dbx:forwardreference`Connection'notdefined,see`helpforwardref'[1]__lwp_kill(0x0,0x6,0x0,0x6,0xffbffeff,0x0),at0xff2ce364[2]raise(0x6,0x0,0x0,0x

c++ - 我如何从 boost::errinfo_nested_exception 中提取任何信息?

我最近开始使用boost::exception。现在我想使用boost::errinfo_nested_exception打印有关错误原因的信息。问题是我无法弄清楚如何从原因中获取信息。我尝试了以下但没有成功:#include#includestructmyex:publicvirtualboost::exception{};intmain(){myexcause;cause(e);//Icantdothis://conststd::string*file=boost::get_error_info(*c);//Northis://conststd::string*file=boost

c++ - 如果异常保存在 std::exception_ptr 中,那么在 catch 语句之外使用异常是否安全?

我有一个std::exception_ptr里面有一个异常。我将调用std::rethrow_exception来获取实际的异常,异常在catch语句之后是否有效?我的猜测是因为我仍然持有std::exception_ptr它仍然有效。看例子:std::exception_ptrePtr=initialize_somewhere_else();std::runtime_error*a=NULL;try{std::rethrow_exception(ePtr);}catch(std::runtime_error&e){a=&e;}std::coutwhat()注意:在我使用Clang的测

c++ - __cxa_throw 可以安全地忽略 Core Audio 吗?

类似question有人问过..但我想让它更具体地针对核心音频..因为我们中的一些人可能已经注意到核心音频几乎没有出错的余地。作为answer对上述问题的解释是,__cxa_throw是C++unhandledexception,可以忽略(这个问题似乎是Xcode4.5.1的新问题。我以前也从未见过它)我们可以对核心音频说同样的话吗?让我紧张的是它与音频格式有关......我的很多代码都依赖于:我正在尝试将AAC文件转换为lPCM..输出格式://setupthePCMoutputformatforconversionstreamer->PCMoutputFormat.mSampleR

java - 如何诊断 Windows Vista 中的 Java JNI EXCEPTION_ACCESS_VIOLATION 错误

我们有一个Java应用程序,它通过JNI使用一些C++库。该应用程序过去在WindowsXP中运行良好,但在WindowsVista中无法运行,它会立即使JVM崩溃。我们还编写了C++库并使用SWIG生成了JNI绑定(bind)。我们有点不知道从哪里开始寻找解决问题的方法。这是我们得到的EXCEPTION_ACCESS_VIOLATION:##AnunexpectederrorhasbeendetectedbyJavaRuntimeEnvironment:##EXCEPTION_ACCESS_VIOLATION(0xc0000005)atpc=0x771b4335,pid=1320,t