【问题标题】:why it couldn't catch exception in c++?为什么它不能在 C++ 中捕获异常?
【发布时间】:2015-07-11 20:07:46
【问题描述】:

我亲爱的朋友们;

为什么 c++ 在这个例子中不能捕获异常?你能解释一下吗?我尝试了很多,但还是不行。如果我在 cmd 中输入一个字符,catch 块不起作用。

try {
    int dX = 0;
    cin >> dX;
    dX = static_cast<double>(10 / dX);
    cout << dX << endl;
}
catch (conts std::exception &exp) { // if I input any of chars, it doesn't catch?
    cerr << "Error: " << exp->what() << endl;
}

【问题讨论】:

  • std::istream 不会对无效输入抛出异常,除非您明确告诉它这样做。
  • 一个也不捕获指向异常的指针,而是一个引用。
  • 只是为了在@BaummitAugen 的(正确)声明中添加一个带有基本原理的参考 - here

标签: c++ exception try-catch


【解决方案1】:

您正在做的事情不会引发异常,因此您可以捕获任何东西。一个错误(可能会引发较低级别的异常),但您无法使用处理程序进行管理。

其他日子会像这样捕获您的异常:

try
{
}
catch (const std::exception& error)
{
// handler
}

【讨论】:

  • 我无法理解:/ 当我在 c# 上写一个示例时,如下所示; c# 总是抛出异常。那么我该怎么做上面的例子才能在c ++上工作?我如何才能捕获始终有效且每个代码都有效的全局异常? c# 示例:try { string abc = “char test”; Conversion.ToInt(abc); } catch(Exception exp) { MessageBox.Show(exp.ToString()); }
猜你喜欢
  • 1970-01-01
  • 2010-12-07
  • 2014-12-05
  • 2011-11-14
  • 2014-11-24
  • 1970-01-01
  • 2021-03-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多