C# 中的异常捕捉(try)和异常处理(catch)

本文介绍了C#中的异常处理机制,重点讲解了try和catch关键字的使用。当代码块中可能出现异常时,可以将其置于try块内。如果发生异常,程序会跳出try块并寻找匹配的catch处理程序来处理异常。每个catch块针对不同类型的异常,确保程序能够捕获并妥善处理错误,避免程序崩溃。通过示例展示了当输入数据类型不匹配时,如何利用try-catch捕获FormatException并输出错误信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        为了捕捉异常,代码要放到一个 try 块中(try 是 C# 关键字)。代码运行时它会尝试执行 try 块内的所有语句。如果没有任何语句产生一个异常,这些语句将一个接一个运行,直到全部完成。然而,一旦出现异常,就会跳出 try 块,并进入一个 catch 处理程序中执行。

        在try块后紧接着写一个或多个 catch 处理程序(catch 也是 C# 关键字),用它们处理任何发生的错误。每个 catch 处理程序都负责捕捉并处理一种特定类型的异常,你可以在一个 try 块后面写多个 catch 处理程序。try 块中的任何一个语句造成错误,“运行时”(runtime)都会生成并抛出一个异常。然后“运行时”将检查 try 块之后的 catch 处理程序,将控制权移交给一个匹配的处理程序。

        catch 处理程序结束之后,程序将从处理程序之后的第一个语句继续执行

下图是使用了 try 和 catch 的一个程序:

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

namespace TryAndCatch
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                int a;
                string b;

                Console.WriteLine("请输入一个整数: ");
                b = Console.ReadLine(); // ReadLine() 获取到的是 string 类型的数据
                a = int.Parse(b);       // int.Parse 方法将 string 类型转换 int 类型
            }

            catch (Exception ex)    // 这是一个常规的 catch 处理程序,能捕捉一切异常
            {
                Console.WriteLine(ex);
            }
        }
    }
}

        由于 a 是 int 类型,所以要求输入的数据也要是 int 类型。此处输入 1.0,类型不符合,所以 try 块在此处会捕捉到一个 FornatException ( 格式异常 ),然后 catch 块会处理这个异常,在这里具体的做法就是输出错误信息。

         FornatException 属于 Exception。

运行后结果如下图所示:


将 try 和 catch 注释掉后代码如下:

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

namespace TryAndCatch
{
    class Program
    {
        static void Main(string[] args)
        {
            ////try
            ////{
                int a;
                string b;

                Console.WriteLine("请输入一个整数: ");
                b = Console.ReadLine();
                a = int.Parse(b);
            ////}

            ////catch (Exception ex)
            ////{
            ////    Console.WriteLine(ex);
            ////}
        }
    }
}

由于没有进行异常捕捉和异常处理,所以运行后结果如下:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值