C# 原始异常,添加了重新抛出的事实,但保留了原始行号和异常类型。有关更多信息,请参阅。您确定它没有显示throw ex?原始异常被一个隐藏了吗?可能是由SqlService.RollbackTransaction抛出的吗?@Andy Shellam:我越来越相

C# 原始异常,添加了重新抛出的事实,但保留了原始行号和异常类型。有关更多信息,请参阅。您确定它没有显示throw ex?原始异常被一个隐藏了吗?可能是由SqlService.RollbackTransaction抛出的吗?@Andy Shellam:我越来越相,c#,exception-handling,try-catch,C#,Exception Handling,Try Catch,原始异常,添加了重新抛出的事实,但保留了原始行号和异常类型。有关更多信息,请参阅。您确定它没有显示throw ex?原始异常被一个隐藏了吗?可能是由SqlService.RollbackTransaction抛出的吗?@Andy Shellam:我越来越相信这可能是真的。我感觉到异常正在吞噬这里。@Andy Shellam:不,异常没有被SqlService隐藏。RollbackTransaction:-(稍等-在您最初的帖子中,您没有捕获到任何异常(异常示例)-只需捕获-如果将抛出新…行恢复为


原始异常,添加了重新抛出的事实,但保留了原始行号和异常类型。有关更多信息,请参阅。

您确定它没有显示
throw ex?原始异常被一个隐藏了吗?可能是由SqlService.RollbackTransaction抛出的吗?@Andy Shellam:我越来越相信这可能是真的。我感觉到异常正在吞噬这里。@Andy Shellam:不,异常没有被SqlService隐藏。RollbackTransaction:-(稍等-在您最初的帖子中,您没有捕获到任何异常(异常示例)
-只需
捕获
-如果将
抛出新…
行恢复为
抛出;
,但保留在
捕获中,是否有效(异常示例)
?有趣的可能的附带答案。+1不止一次发生在我身上。8^数据匹配,只是反复检查是的,但
抛出;
保留原始堆栈跟踪。@SLaks:很好的观点。根据@Andy Shellam对原始问题的评论,我开始认为原始异常可能被吞没了catch块中出现异常。谢谢!不确定你所说的helper方法是什么意思。我的代码和你的代码上的异常是在一个单独的方法上生成的。@Claudio:我更新了帖子以显示helper方法的样子。+1 Simon谢谢你的回答:)我会检查那些链接谢谢!为什么C#在默认情况下不这样做?为什么是弱智的变通办法?
try
{
  //AN EXCEPTION IS GENERATED HERE!!!
}
catch  
{
   SqlService.RollbackTransaction();
   throw;
}
try
{
  //HERE IS CALLED THE METHOD THAT CONTAINS THE CODE ABOVE
}
catch (Exception ex)
{
   HandleException(ex);
}

catch(Exception ex)
{
    SqlService.RollbackTransaction();
    throw new Exception("Enrollment error", ex);
}
using System;

class Program {
    static void Main(string[] args) {
        try {
            Test();
        }
        catch (Exception ex) {
            Console.WriteLine(ex.ToString());
        }
        Console.ReadLine();
    }
    static void Test() {
        try {
            throw new Exception();  // Line 15
        }
        catch {
            throw;                  // Line 18
        }
    }
}
System.Exception: Exception of type 'System.Exception' was thrown.
   at Program.Test() in ConsoleApplication1\Program.cs:line 18
   at Program.Main(String[] args) in ConsoleApplication1\Program.cs:line 6
static void Test() {
    try {
        Test2();                // Line 15
    }
    catch {
        throw;                  // Line 18
    }
}
static void Test2() {
    throw new Exception();      // Line 22
}