【发布时间】: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 寻求帮助以解决不必要的屈尊。
-
对不起,我并没有任何居高临下的意思。我想请您参考其他问题来讨论
throw与throw ex可能被视为居高临下,但这只是那里已经提供了很好的信息。我不想在这里复制它,而且我的工作几乎没有其他已经发布的人那么好。
标签: c# .net exception-handling timeout