Csharp/C Sharp/Language Basics/Exception Stack

Материал из .Net Framework эксперт
Перейти к: навигация, поиск

Printing the stack trace from the Environment when an exception is not thrown

<source lang="csharp"> /* C# Programming Tips & Techniques by Charles Wright, Kris Jamsa Publisher: Osborne/McGraw-Hill (December 28, 2001) ISBN: 0072193794

  • /

// EnvTrace.cs -- demonstrates printing the stack trace from the Environment // when an exception is not thrown. // // Compile this program with the following command line: // C:>csc /debug:full EnvTrace.cs using System; using System.Diagnostics; namespace nsExceptions {

   public class EnvTrace
   {
       static public void Main ()
       {
           clsTest test = new clsTest();
           test.TestStackTrace ();
           Console.WriteLine ("\r\nProgram completed normally");
       }
   }
   public class clsTest
   {
       public void TestStackTrace ()
       {
           try
           {
               CauseTrouble(1.7);
           }
           catch (Exception e)
           {
               Console.WriteLine (e.StackTrace);
           }
       }
       void CauseTrouble (double val)
       {
           clsAnother nudder = new clsAnother ();
           nudder.MakeProblem ((int) val);
       }
   }
   class clsAnother
   {
       public void MakeProblem (int x)
       {
          Console.WriteLine (Environment.StackTrace); 
       }
   }

}

      </source>


Print the stack trace when an exception is thrown

<source lang="csharp"> /* C# Programming Tips & Techniques by Charles Wright, Kris Jamsa Publisher: Osborne/McGraw-Hill (December 28, 2001) ISBN: 0072193794

  • /

// StakTrce.cs -- demonstrates printing the stack trace when an // exception is thrown. // // Compile this program with the following command line: // C:>csc /debug:full StakTrce.cs using System; namespace nsExceptions {

   public class StakTrce
   {
       static public void Main ()
       {
           clsTest test = new clsTest();
           test.TestStackTrace ();
       }
   }
   public class clsTest
   {
       public void TestStackTrace ()
       {
           try
           {
               CauseTrouble(1.7);
           }
           catch (Exception e)
           {
               Console.WriteLine (e.StackTrace);
           }
       }
       void CauseTrouble (double val)
       {
           clsAnother nudder = new clsAnother ();
           nudder.MakeProblem ((int) val);
       }
   }
   class clsAnother
   {
       public void MakeProblem (int x)
       {
           throw (new Exception());
       }
   }

}

      </source>