【问题标题】:C#: Line number on stacktrace points to line with a }C#:stacktrace 上的行号指向带有 } 的行
【发布时间】:2011-07-29 22:56:19
【问题描述】:

有关解决此问题的建议?在咨询谷歌机器时,我不断提出“缺失”的行号,这不是我们遇到的问题。我们有一个行号,但它只指向一个右大括号。

这可能是因为它是超时吗?奇怪的是,它始终在方法的最后放弃,同样的方法同样如此。超时不一定频繁,应用程序(调用 asmx Web 服务的 win 表单)有时会在其他地方超时。

编辑:代码和堆栈跟踪。

public DataSet GetData(...)
{
   // About 18 try/catch blocks loading tables in dataset, all similar to below
   try
   {
      // Create Table Adapter
      // Fill Table
   }
   catch (Exception ex)
   {
      LogError(ex, System.Reflection.MethodBase.GetCurrentMethod(), null);
      throw ex;
   }
}  //Line 479

System.Web.Services.Protocols.SoapException: System.Web.Services.Protocols.SoapException: 服务器无法处理请求。 ---> System.Data.SqlClient.SqlException: 超时已过。超时时间 在完成之前经过 操作或服务器不 回应。在 MonitoringDataService.AddAllData(数据集 数据、日期时间 LastSync、字符串 PrevAreas, String NewAreas, DateTime PrevStartDate, 日期时间 PrevEndDate, 日期时间新开始日期,日期时间 NewEndDate,Int32 当前用户,布尔值 IsInGroup) 在 MonitoringDataService.cs:第 479 行

值得注意的是,这是内部异常。

【问题讨论】:

  • 您忘记发布代码和堆栈跟踪。我们无法从这里读取它。
  • 试图不必去掉很多东西。添加了代码。
  • 是的,所以真正的问题是您拥有所有这些 try/catch 块。没有充分的理由。第二个问题是您使用的是throw ex 而不是throw。这已经在这里讨论过多次了。例如,请参阅here。解决问题的最佳方法是剥离所有 try/catch 块并捕获您明确处理的错误。有更好的方法来记录异常;你不应该全部内联。
  • +1 寻求帮助以解决不必要的屈尊。
  • 对不起,我并没有任何居高临下的意思。我想请您参考其他问题来讨论throwthrow ex 可能被视为居高临下,但这只是那里已经提供了很好的信息。我不想在这里复制它,而且我的工作几乎没有其他已经发布的人那么好。

标签: c# .net exception-handling timeout


【解决方案1】:

可能的原因:

  • 正在运行的代码与您正在调试的源代码不同。这是最可能的原因。
  • 行可能是throw new exception(...) 之后的行

【讨论】:

  • 我们最近重新发布了网络服务,所以选项一不太可能。但是,开发人员在记录异常后添加了 throw ex。我可以想象它是 18 多个 try/catch 块的集合......找到真正的根本原因几乎是不可能的。
  • 并不是说要避免 try/catch,但我当然希望它们不会相互嵌入。
  • 不,幸好没有嵌入。即使我会为此哭泣。我对它的编写方式并不感到疯狂,但它就是这样,我现在必须处理它。
  • 我在尝试调试来自客户的日志文件时遇到了类似的症状,其中包含堆栈跟踪。例外是 NullReferenceException,堆栈跟踪中的前 3 项是我的应用程序代码,所有行号都指向函数末尾的右括号(我知道我有正确的源副本)。这些函数中的任何地方都没有 catch 或 throw 语句。其他人有任何线索吗?
【解决方案2】:

很可能不是在最后的大括号上真正出错,而是在它之前的那一行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-27
    • 1970-01-01
    • 2014-08-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多