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
}