相关疑难解决方法(0)

什么可以导致重置一个callstack(我正在使用"throw",而不是"throw ex")

我一直认为"throw"和"throw ex"之间的区别在于单独抛出并没有重置异常的堆栈跟踪.

不幸的是,这不是我正在经历的行为; 这是一个复制我的问题的简单示例:

using System;
using System.Text;

namespace testthrow2
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                try
                {
                    throw new Exception("line 14");
                }
                catch (Exception)
                {
                    throw; // line 18
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());

            }
            Console.ReadLine();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我希望这段代码能够从第14行开始打印一个callstack; 然而,callstack从第18行开始.当然,它在样本中没什么大不了的,但在我的实际应用中,丢失初始错误信息是非常痛苦的.

我错过了一些明显的东西吗 有没有其他方法来实现我想要的(即重新抛出异常而不丢失堆栈信息?)

我正在使用.net 3.5

.net c# exception-handling exception stack-trace

25
推荐指数
2
解决办法
7102
查看次数

.NET - Return是否阻止对象处理

给出以下代码:

  Function GetSomething() As Integer
    Using dbConn As New SqlConnection("Connection_String")
      dbConn.Open()
      Using dbCmd As New SqlCommand(" SELECT SOMETHING ....", dbConn)
        Return Integer.Parse(dbCmd.ExecuteScalar())
      End Using
      dbConn.Close()
    End Using
  End Function
Run Code Online (Sandbox Code Playgroud)

Return是否会阻止执行功能块的其余部分,即关闭数据库连接以及当Using块完成时调用的隐含Dispose()?

.net vb.net return function

5
推荐指数
1
解决办法
1834
查看次数