我的C#日记2

1.try...catch...finally的代码示例:

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

// Spacing added here so that line numbers match with the chapter description.




namespace Ch07Ex02
{
   class Program
   {
      static string[] eTypes = { "none", "simple", "index", "nested index" };

      static void Main(string[] args)
      {
         foreach (string eType in eTypes)
         {
            try
            {
               Console.WriteLine("Main() try block reached.");      // Line 23
               Console.WriteLine("ThrowException(\"{0}\") called.", eType); // Line 24
               ThrowException(eType);
               Console.WriteLine("Main() try block continues.");      // Line 26
            }
            catch (System.IndexOutOfRangeException e)                 // Line 28
            {
               Console.WriteLine("Main() System.IndexOutOfRangeException catch"
                                 + " block reached. Message:\n\"{0}\"",
                                 e.Message);
            }
            catch                                                   // Line 34
            {
               Console.WriteLine("Main() general catch block reached.");
            }
            finally
            {
               Console.WriteLine("Main() finally block reached.");
            }
            Console.WriteLine();
         }
         Console.ReadKey();
      }

      static void ThrowException(string exceptionType)
      {
         Console.WriteLine("ThrowException(\"{0}\") reached.", exceptionType); // Line 49
         switch (exceptionType)
         {
            case "none":
               Console.WriteLine("Not throwing an exception.");
               break;                                               // Line 54
            case "simple":
               Console.WriteLine("Throwing System.Exception.");
               throw (new System.Exception());                      // Line 57
            case "index":
               Console.WriteLine("Throwing System.IndexOutOfRangeException.");
               eTypes[4] = "error";                                 // Line 60
               break;
            case "nested index":
               try                                                  // Line 63
               {
                  Console.WriteLine("ThrowException(\"nested index\") " +
                                    "try block reached.");
                  Console.WriteLine("ThrowException(\"index\") called.");
                  ThrowException("index");                          // Line 68
               }
               catch                                                // Line 70
               {
                  Console.WriteLine("ThrowException(\"nested index\") general"
                                    + " catch block reached.");
                  //throw;
               }
               finally
               {
                  Console.WriteLine("ThrowException(\"nested index\") finally"
                                    + " block reached.");
               }
               break;
         }
      }
   }
}


    (1)try内有throw或是有异常操作,catch才会接住。
    (2)可用"throw(new System.Exception());"在try中抛出异常。
    (3)catch中可用"throw;"抛出异常。


2.调试和错误处理
  (1)想要使用Debug.WriteLine(),Debug.WriteLineIf(),Debug.Write(),Trace.WriteLine(),Trace.WriteLineIf(),Trace.Write()等函数,需要加上"using System.Diagnostics;"这名称空间。
  (2)Debug.WriteLine()和Trace.WriteLine()等函数输出字符串带有变量时可以不用string.Format()。
  


   总结的调试方法:
   一.诊断输出。用Debug.WriteLine()和Trace.WriteLine()等函数,配合[输出]窗口,可以查看运行的过程。
   二.跟踪点。设置跟踪点,配合[输出]和[断点]窗口,可查看运行的过程。
   三.判定语句。用Debug.Assert()和Trace.Assert()来促发断点,配合弹出的对话框和[输出]窗口。
   四.断点。设置断点,配合[输出]和[断点]窗口。
  (注:三和四可搭配:[自动(Ctrl+D,A)][局部变量(Ctrl+D,L)][监视]窗口,以及单步执行代码。)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值