【发布时间】:2012-05-10 07:25:07
【问题描述】:
我是一名使用 C++ 代码的 Java 程序员,需要一些异常处理方面的帮助。
我的代码结构如下:
try{
...
}
catch( ... )
{
log("Exception occurred");
}
发生了异常,但 try 块确实很大,无法进行调试,因此我需要对代码进行最低限度的修改,以提供有关异常的相关信息。
所以我在现有的 catch 块之前添加了以下 catch 块(使用我的 Java 知识并参考 C++ 指南):
catch(exception e)
{
log(e.what());
}
但是,我仍然收到旧消息 - “发生异常”。 try 块中的代码包含很多底层函数,如strncpy, memcpy 等。
为什么这个catch 块没有按预期工作?我可以做些什么来获取有关正在发生的异常以及发生在哪一行的信息,类似于 Java 轻松提供的堆栈跟踪。
【问题讨论】:
-
C中没有“异常”之类的东西(至少在控制流机制的意义上没有)。 -
@Mankarse,
std::exception确实存在于 C++ 标准库中。对 Shailesh 来说,你可以使用 gdb 来调试此类非标准异常。 -
@iammilind:这个问题之前被标记为 C,并谈到了在“C/C++”代码中处理异常处理。此后已对其进行了编辑,因为 Shailesh Tainwala 显然在编写 C++,而不是 C。
-
值得一提的是你应该把你的catch块放在catch(...)之前,你应该通过引用而不是通过值来捕捉
标签: c++ exception-handling try-catch