现在的位置: 首页 > 综合 > 正文

C#中的调试和错误处理

2014年09月05日 ⁄ 综合 ⁄ 共 1769字 ⁄ 字号 评论关闭

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;
            }
        }
    }
}

 

抱歉!评论已关闭.