如何在 C 语言中捕获所有异常
使用 Java 时,可以利用 try-catch 块来使用 catch 捕获所有异常(Throwable t) 语法。但是,C 中是否有等效的机制?
为了满足对通用异常捕获机制的要求,特别是对于调试调用 Windows 函数的 JNI 代码非常有用,以下是如何在 C 中实现它:
<code class="cpp">try { // ... } catch (...) { // ... }</code>
此代码将捕获 try 块内的所有 C 异常。然而,值得注意的是,捕获所有异常通常被认为是一种糟糕的设计实践。如果可能,最好对预期发生的异常使用更具体的 catch 子句。
例如,如果由于遗留代码限制而无法使用 C 11 的 std::current_exception 机制,您可以可以考虑像这样更细粒度的方法:
<code class="cpp">try { // ... } catch (const std::exception& ex) { // ... } catch (const std::string& ex) { // ... } catch (...) { // ... }</code>
这将捕获特定的异常类型(本例中为 std::exception 和 std::string),同时使用最终的 catch-all 子句捕获任何不可预见的异常。请记住,仅使用 catch-all 子句作为捕获未明确处理的意外错误的最后手段至关重要。
以上是C 中是否有像 Java 的 Throwable 那样的 Catch-All 异常机制?的详细内容。更多信息请关注PHP中文网其他相关文章!