c#异常处理实例

本文通过实例演示了C#中的异常处理流程,包括try-catch-finally块的使用。当在方法B中发生DivideByZeroException异常时,程序会逐级回溯到Main方法进行捕获并输出相应的异常处理信息。在每个方法中,finally块确保无论是否发生异常都会执行的代码。

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



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

//程序流程
//1..执行类对象调用方法A(),跳转到A(),try块调用方法B()
//2..发生异常,首先在被调用的方法B()查找是否有异常处理
//3..没有找到,从栈返回到调用点A(),查找是否有异常处理
//4..没有找到,从栈返回到调用点Main(),查询是否有异常处理
//5..捕获异常,输出异常处理"Catch clause in Main()"
//6..执行"finally“
//7..执行剩下的语句
namespace tyrcatch1
{
    class Program
    {
        static void Main(string[] args)
        {
            MyClass MCls = new MyClass();
            try
            {
                MCls.A();
            }
            catch(DivideByZeroException e)
            {
                Console.WriteLine("Catch clause in Main()");}
            finally
            {
                Console.WriteLine("finally clause in Main()");}
            Console.WriteLine("After try statement in Main.");
            Console.WriteLine("         ---Keep running.");
            Console.ReadKey();
        }
    }

    class MyClass
    {
        public void A()
        {
            try       //可能导致异常的语句
            {
                B();//如果B()发生异常则首先在B()代码中查看是否有异常处理程序,如有转到B(),如果没有转到A()
            }
            catch (System.NullReferenceException)
            { Console.WriteLine("Catch clause in A()"); }
            finally
            { Console.WriteLine("Finally clause in A()"); }//不管是否有异常一定会执行
        }

        void B()
        {
            int x = 10, y = 0;
            try
            {
                x /= y;
            }
            catch (System.IndexOutOfRangeException)
            { Console.WriteLine("Catch clause in B()"); }
            finally
            { Console.WriteLine("finally clause in B()"); }
        }

    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值