【问题标题】:C++ Exception Handling: Regarding 'try' blockC++ 异常处理:关于 'try' 块
【发布时间】:2018-11-08 05:18:31
【问题描述】:

在 C++ 中,'try' 块有什么用? (当我们清楚地“抛出”问题时) 我认为在 Java 中,可以在“try”块中的任何位置找到异常,而无需“throw”语句。

否则“try”是使“throw”有效的句法要求?

如果我的问题有任何错误,请纠正我。

【问题讨论】:

  • 如果你没有try,你就不能拥有catch
  • 到目前为止,您找到的关于该主题的最佳资源是什么?如果问题中包含这些内容会有所帮助。
  • 没有这样的语法要求。您不需要try 块来引发异常。
  • try 标记内部将被执行的代码块。 catch 不适用于任何地方的任意异常,而仅适用于 try 的左右大括号之间的代码。所以它不是语法糖

标签: c++ exception-handling


【解决方案1】:

据我所知,在 C++ 中使用 try-block 与在 Java 中使用 try-block 相同。 finally 的语法不同,但原理相同。由于您对 Java 的理解没有为您回答您的问题,我将给出一个解释,忽略问题的 Java 参考。 (这并不是对异常处理的完整解释,只是对 try 块的使用。更多信息可在有关该主题的各种参考资料中找到。)

假设抛出异常。你如何防止它结束你的程序?你必须抓住它。 (到目前为止有意义吗?抛出一些东西并期望它会被捕获?)你如何捕获异常?用“catch”关键字。

好的,让我们在方便的在线参考资料中查找“catch”关键字,例如 cppreference.com。此特定参考将您引导至try-block,其中描述了“catch”的使用。具体来说,“catch”被用作 try-block 的一部分。 (try 块不只是由“try”后跟复合语句组成;catch 子句也是 try 块的一部分。)为了使用“catch”关键字在你的程序中,你的程序需要一个 try-block。

总之,try-block 的使用是为了捕捉异常。如果您的程序中没有 try-blocks,那么第一个抛出的异常将 terminate 您的程序。

【讨论】:

  • 我认为在Java中'throw'关键字不是必需的,指令本身可以做所有事情。假设(在 Java 中)如果 try 块包含 10 行,则可以在任何行抛出异常。(但在 C++ 中)如果你有一个 throw 语句,那么只有异常会被正确处理。考虑到在这两种情况下都存在确切的捕获选项。如果我错了,请纠正我。
  • @Raj 是关于“throw”的声明。正确与否与“try”这个问题无关。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-04
  • 2012-12-31
  • 2019-01-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多