C#异常处理机理-代码分析

本文介绍了一个C#程序示例,展示了如何通过属性访问私有字段并实现异常处理,包括定义自定义异常类来增强程序的健壮性和用户体验。

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

//代码核心:

//1.通过属性Age访问私有字段_age
//2.设计异常处理(溢出,非数字字符串,年龄范围异常,其它异常)
//3.自己定义一个异常类,继承FormatException异常类

using System;

public class OutString
{
    private int _age; //1.定义一个私有字段,限制类外面访问
    public int Age    //2.定义一个公有属性,对私有字段进行访问并提供灵活控制        
    {
    get       //3.取值访问器
    {
       return this._age;
    }
    set      //4.赋值访问器
    {
       if(value<=0 || value>=150)    //5.使用属性提供的赋值访问器进行控制,set{}就是个方法
            {
               //6.抛出异常实例
               throw new AgeRangeException("年龄应该在0-150岁之间,请核对输入数据!");              
            }
            else
            {
          this._age=value;
            }
    }
    }
   
   public class AgeRangeException:System.FormatException //7.定义一个异常类,继承系统FormatException异常类
    {
    public AgeRangeException():base()
    {}
    public AgeRangeException(string exmessage):base(exmessage)
    {}
    }
}

public class Demo //7.使用上面的class OutString,类做好了就是给别人用的哦
{
public static void Main(string[] args)    //8.程序的入口,静态Main();
{
   string CP;
   while(true)    //9.死循环 除非自己能合理控制否则小心使用它
   {
    try    //10.try语句块,也是雷区
      {
      int tempage;    
      OutString OS=new OutString();
      Console.Write("请输入你的年龄:");
      tempage=Convert.ToInt32(Console.ReadLine());
      OS.Age=tempage;
      Console.WriteLine("年龄为:"+OS.Age);
         }
         //11.异常类层次关系Object--SystemException--SystemFormatException...
         catch(FormatException FE) //根据系统FormatException异常类捕捉异常情况
         {
          Console.WriteLine(FE.Message);
         }        
         catch(OverflowException OFE) //根据系统OverflowException异常类捕捉异常情况
         {
          Console.WriteLine(OFE.Message);
         }
         catch(Exception E) //根据系统Exception异常类捕捉异常情况
         {
          Console.WriteLine(E.Message);
          Console.WriteLine("发生异常了,请与管理员联系处理!!!");                   
         }
        
         finally   //12.finally语句块总有执行的
         {
         Console.Write("按Y键退出,否则重新输入");                          
         }        
         CP=Console.ReadLine().ToLower(); //.最后一点,控制死循环语句  
         if(CP=="y")
         {
         break;
         }
        
     }
}
}
Try...Catch...Finally   语句专门用于结构化异常处理。  
   
异常处理程序的try{}块包含希望错误处理程序监视的代码节。如果该代码节中的任何代码在执行期间发生错误,C#将检查Try...Catch...Finally内的每个Catch语句,直到找到条件与该错误匹配的语句。
如果找到了这样的语句,则控制转移到catch块内的第一个代码行。
如果没有找到匹配的Catch语句,则继续搜索包含发生异常的块的外部Try...Catch...Finally块的Catch语句。此过程在整个堆栈中继续,直到在当前过程中找到匹配的 catch块。
如果没有找到,将产生错误。  
   
Finally节中的代码总是最后执行,并且刚好在错误处理块失去范围之前执行,不论Catch块内的代码是否已执行。将清理代码(如用于关闭文件和释放对象的代码)放在Finally节中。

(以上理解如有误,恳请指教!并将立即更新)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值