【问题标题】:Why doesn't try {} catch{} work in C#?为什么 try {} catch{} 在 C# 中不起作用?
【发布时间】:2026-02-14 10:35:01
【问题描述】:

我在 Visual Studio 的程序中有一个 try{} catch{} 块。在try{} 块中,我有连接数据库的代码,当我运行该程序时,它返回错误。在这种情况下,程序必须执行catch{} 块,但是从try{} 块返回错误并且程序停止。

try {
  using (OracleConnection cn = new OracleConnection(DataBase.EDS_SDE_Connection)) {
    cn.Open();
    using (OracleCommand cm = cn.CreateCommand()) {
      cm.CommandType = CommandType.StoredProcedure;
      cm.CommandText = "EDS_FEAUTRE_CLASSES.DIS_ENA_TRG_LOG";
      OracleParameter oParam = new OracleParameter("PISDISABLE", OracleDbType.Decimal);
      oParam.Direction = ParameterDirection.Input;
      oParam.Value = pIsDisable;
      cm.Parameters.Add(oParam);
      cm.ExecuteNonQuery();
    }
  }
  bRet = true;
} catch (Exception ex) {
  ClsShares.ShowMessage("", ex.Message);
  bRet = false;
}

这是来自下面突出显示的复选框:

【问题讨论】:

  • 你捕获了什么异常类型?也许抛出的异常不是捕获的类型(或继承类型)
  • 显示代码和异常信息,我们可以提供更好的帮助。
  • 这是我的异常捕获 (Exception ex) { } @KhanhTO
  • 您是否从 VS IDE 运行应用程序?尝试从 .exe 运行
  • 错误发生在哪里?你是说永远不会调用“ShowMessage”吗?

标签: c# error-handling


【解决方案1】:

默认情况下,并非所有异常类型都启用以中断解决方案。如上图所示,您可以从“异常设置”窗口中选择启用的选项。 设置要抛出的 CLR 异常。这就是代码将如何中断(如果没有 try/catch),或者在您的情况下,try 序列将中断并执行 catch 块。

对于不同的 IDE:

VS2015: Debug -> Windows -> Exception Settings.

VS2012: Debug -> Exceptions more details

【讨论】: