C#中的调试和错误处理

1、输出调试信息:

可以使用函数Debug.WriteLine();

Trace.WriteLine();

区别,在于前者只有在调试状态下才输出,后者还可以用于发布版本。

2、try...catch...finally

通过这个函数来捕获异常。

3、附加代码在vs2010中亲自测试通过

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
 
namespace ConsoleApplication9 

    class Program 
    { 
        static string[] eTypes = { "none", "simple", "index", "nested index" };  //定义异常类型数组并存入string类型的数组中 
 
 
        static void Main(string[] args) 
        { 
            foreach (string eType in eTypes)                                      //循环遍历异常类型 
            { 
                try 
                { 
                    Console.WriteLine("Main() try block reached."); 
                    Console.WriteLine("ThrowException(\"{0}\") called.", eType); 
 
                    ThrowException(eType); 
                    Console.WriteLine("Main() try block continues."); 
                } 
                catch (System.IndexOutOfRangeException e)                        //索引超出范围异常 
                { 
                    Console.WriteLine("Main() System.IndexOutOfRangeException catch" 
                        + "block reached.Message:\n\"{0}\"", e.Message); 
                } 
                catch 
                { 
                    Console.WriteLine("Main() general catch block reached.");  //普通catch捕获 
                } 
                finally                                                        //有无异常都始终会输出 
                { 
                    Console.WriteLine("Main() finally block reached."); 
                } 
 
                Console.WriteLine(); 
            } 
            Console.ReadKey(); 
        } 
 
        static void ThrowException(string exceptionType) 
        { 
            Console.WriteLine("ThrowException(\"{0}\") reached ." ,exceptionType ); 
 
            switch (exceptionType) 
            { 
                case "none":                                                    //不抛出异常 
                    Console.WriteLine("Not throwing an exception.");             
                    break; 
                case "simple":                                                  //生成一般异常 
                    Console.WriteLine("Throwing System.Exception.");             
                    throw (new System.Exception()); 
                    break; 
                case "index":                                                    //生成System.IndexOutOfRangeException.异常 
                    Console.WriteLine("Throwing System.IndexOutOfRangeException."); 
                    eTypes[4] = "error"; 
                    break; 
                case "nested index":                                            //包含自己的try块,其中调用index情况 
                    try 
                    { 
                        Console.WriteLine("ThrowException(\"nested index\")" + 
                            "try block reached."); 
                        Console.WriteLine("ThrowException (\"index\") called."); 
                        ThrowException("index"); 
                    } 
                    catch 
                    { 
                        Console.WriteLine("throwException(\"nested index\") general" 
                            + "catch block reached."); 
                    } 
                    finally 
                    { 
                        Console.WriteLine("ThrowExceptiopn(\"nested index\") finally" 
                            + " block reached."); 
                    } 
                    break; 
            } 
        } 
    } 

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/87daf254ff0931eb34c08c7fdb1dac4c.html