iT邦幫忙

2021 iThome 鐵人賽

DAY 11
0
Software Development

C# 入门系列 第 11

C#入门之错误处理

  • 分享至 

  • xImage
  •  

在很多情况下,有些错误是我们可以预知的,就比如前面计算两个数相加的代码,在有些情况下,我们可以预知到,有些用户可能会输入错误类型的数组,比方说,输入字母;

示例代码:

using System;

namespace ConsoleApp13
{
    class Program
    {
        static int Sum(int x, int y)
        {
            return x + y; 
        }

        static void Main(string[] args)
        {
            Console.WriteLine("Please enter first number:");
            int firstNum = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("Please enter second number:");
            int secondNum = Convert.ToInt32(Console.ReadLine());
            int sum = Sum(firstNum, secondNum);   
            Console.WriteLine($"The sum is {sum}.");
        }
    }
}

在弹出的命令行窗口中,我们输入一个字母,按回车后,出现了错误,代码终止运行,我们可以在下面的 Output 窗口中,看到错误的相关信息。但我们应该怎么在代码中添加一些代码,在用户输出错误时,继续运行代码,并在终端窗口(命令行窗口)输出 Output 中的错误信息:

using System;

namespace ConsoleApp13
{
    class Program
    {
        static int firstNum, secondNum;
        static int Sum(int x, int y)   // 定义一个函数,需要传递两个参数,参数类型为 int
        {
            return x + y;    // 该函数将返回 x 与 y 的和
        }

        static void Main(string[] args)
        {
            try
            {
                Console.WriteLine("Please enter first number:");
                Program.firstNum = Convert.ToInt32(Console.ReadLine());
            }
            catch(Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            try
            {
                Console.WriteLine("Please enter second number:");
                Program.secondNum = Convert.ToInt32(Console.ReadLine());
            }
            catch(Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            int sum = Sum(firstNum, secondNum); 
            Console.WriteLine($"The sum is {sum}.");
        }
    }
}

此时再次运行代码:
https://ithelp.ithome.com.tw/upload/images/20210910/20099494XBlwrSuaBf.png

我们还可以通过 Environment.Exit() 设置程序在遇到错误(执行 catch)时,输出错误信息,并退出程序:

using System;

namespace ConsoleApp13
{
    class Program
    {
        static int firstNum, secondNum;
        static int Sum(int x, int y)   // 定义一个函数,需要传递两个参数,参数类型为 int
        {
            return x + y;    // 该函数将返回 x 与 y 的和
        }

        static void Main(string[] args)
        {
            try
            {
                Console.WriteLine("Please enter first number:");
                Program.firstNum = Convert.ToInt32(Console.ReadLine());
            }
            catch(Exception ex)
            {
                Console.WriteLine(ex.Message);
                Environment.Exit(2);
            }
            try
            {
                Console.WriteLine("Please enter second number:");
                Program.secondNum = Convert.ToInt32(Console.ReadLine());
            }
            catch(Exception ex)
            {
                Console.WriteLine(ex.Message);
                Environment.Exit(2);
            }
            int sum = Sum(firstNum, secondNum); 
            Console.WriteLine($"The sum is {sum}.");
        }
    }
}

执行程序:
https://ithelp.ithome.com.tw/upload/images/20210910/20099494JBllGIz4p8.png


上一篇
C#入门之代码调试
下一篇
C#入门之列表
系列文
C# 入门32
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言