新手C#异常的学习2018.08.07

  异常是在程序执行期间出现的问题。C# 中的异常是对程序运行时出现的特殊情况的一种响应,比如尝试除以零。

    class Program
    {
        static void Main(string[] args)
        {
            System.IO.File.Delete(@"F:\output.txt");
            System.IO.File.Delete(@"F:\面向对象2.exe");
            System.IO.File.Delete(@"F:\input.txt");
            Console.ReadKey();
        }
    }

  上述代码中,若面向对象2.exe文件被打开,程序执行时会抛异常,我们会发现output.exe已经被删除,但是input.exe并未被删除,可见异常产生时,异常代码前面的代码会被执行,后面的不会被执行,为了处理异常产生,采用try,catch关键词。

    class Program
    {
        static void Main(string[] args)
        {
            System.IO.File.Delete(@"F:\output.txt");
            /*如果try中的代码执行发生异常,直接执行catch中的代码会被执行,catch之后的代码会继续往下执行
             * 如果不加try-catch,代码执行抛出异常后,后面的代码不会继续执行
             */ 
            try
            {
                System.IO.File.Delete(@"F:\面向对象2.exe");
            }
            catch
            {
                Console.WriteLine("删除失败");
            }
            System.IO.File.Delete(@"F:\input.txt");
            Console.ReadKey();
        }
    }

  运行面向对象2.exe文件,当代码被编译时,输出结果为“删除失败”,但是output.txt和input.txt文件均成功被删除,面向对象2.exe文件未被删除。可见当执行try失败后,直接运行catch及catch后续的代码。

  但是在上述代码执行时,我们并不知道异常的原因,采用下列代码可以弹出异常原因

            try
            {
                System.IO.File.Delete(@"F:\面向对象2.exe");
            }
            catch(Exception error)
            {
                Console.WriteLine("删除失败,错误为{0}",error.Message);//可以显示异常原因
            }

  在catch()中加入Exception xx,可以在运行结果中弹出抛异常的原因,结果截图如下

  不要随意地使用try catch,异常是一种“未考虑的情况”,尽量不要靠try catch来实现正常的逻辑,程序员应该要自身完善程序的逻辑性,避免出现异常。

2018.08.07 

猜你喜欢

转载自www.cnblogs.com/do-hardworking/p/9435786.html