【C#基础学习】学习日记2

1.输出调试信息

          在程序运行期间,把文本写入Output窗口是非常简单的,只要用需要的调用替代Console.WriteLine()调用,就可以吧文本写到希望的地方。此时可以使用如下两个命令:
Debug.WriteLine()  仅在调试模式下运行
Trace.WriteLine() 仅在发布程序运行
Debug.WriteLine("Text 1 and i", "myTag");
名称空间:using System.Diagnostics;
Debug.Write();
Trace.Write();
Debug.WriteLineIf();
Trace.WriteLineIf();
Debug.WriteIf();
Trace.WriteIf();

2.跟踪点tracepoint  是另一种把信息输出到Output窗口中的方法

3.中断调试

         1.IDE的Pause按钮;
         2.断点;
         3.抛出未处理异常时进入;
         4.判定语句 assertion;

4.错误处理

try...catch...finally c#语言包含结构化异常处理(Structured Exception Handing,SEH)的语法。

try
{
......
}
catch(<exceptionType>e)
{
......
}
finally
{
......6y
}
理解程序:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Ch07Ex02
{
    class Program
    {
        static string[] eTypes = { "none", "simple", "index", "nested index" };
        // Padding so that line numbers match those in the chapter.
        //
        //
        //
        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.");
                         Modification for "Notes on Exception Handling" section
                        // throw;
                    }
                    finally
                    {
                        Console.WriteLine("ThrowException(\"nested index\") finally"
                                          + " block reached.");
                    }
                    break;
            }
        }
    }
}

如果使用throw抛出catch块处理过的异常,那么该异常就不会由当前try...catch...finally块处理,而是由上一级代码处理,当前代码块的finally块仍然会执行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值