C#中类的异常处理

Posted dotNET跨平台

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#中类的异常处理相关的知识,希望对你有一定的参考价值。

欢迎您成为我的读者,希望这篇文章能给你一些帮助。

前言

日常编码过程中,最重要的技能不是说你学会使用很多最新的编程技术或者做出一个高大上的系统。而是你在写代码过程中,对异常的处理,是否系统可以稳定,健壮。

对于异常的处理在C#中是通过try/cath机制来捕获的,接下来我们一起来看看。

异常是程序中的运行时错误,它违反了系统约束或应用程序约束,或出现了在正常操作时未预料的情形。

比如对于某些变量的非正常赋值或者在参与运算操作时出现错误等。

异常

关于异常,在C#中通过try语句和处理异常机制类保证异常的捕获,防止由于异常的未捕获导致整个程序出现异常提醒,甚至出现崩溃。

异常的要求

  • try块包含为避免出现异常而被保护的代码

  • catch子句部分含有一个或多个catch子句。(处理异常代码段也叫做异常处理子程序)

  • finally块含有在所有情况下都要被执行的代码,无论有没有异常发生。

class Program

    static void Main(string[] args)
    
        try
        
            //验证是否有异常的代码
            Ahui hui = new Ahui();
            InfoBase info = (InfoBase)hui;

            Console.WriteLine(hui.GetInfo());
            Console.WriteLine(info.GetInfo());
        
        catch (Exception ex)
        
            //捕获异常,进行异常的处理

            throw new Exception("异常向上一层抛出!");
                    
        Console.ReadKey();
    

在处理业务代码时,必须在刚开始就将逻辑上的错误都考虑清楚进行验证处理,比如判空,非正常值,值类型错误等。

其次在通过try/catch机制来捕获非正常的异常,防止程序出现无法把控的错误,导致崩溃。

提示:在业务程序中尽量少用异常进行捕获,如果条件满足要第一时间对异常进行前期处理。<Catch()中的异常处理时间会比较长,而且会导致系统资源被浪费(异常实时被往上抛出)。>

在C#中有很多不同类型的异常可能被发生,BCL定义了许多类,每一个类代表一个指定的异常类型。当一个异常发生时,CLR首先创建该类型的异常对象,其次寻找适当的catch子句以处理它。(所有的异常类都派生自System.Exception类)

关于catch()有三种形式,可以处理不同级别的异常。

第一种 一般异常处理

try
   

   
   catch
   
       //一般异常处理
       
   

能接受任何异常,但不能确认引起异常的类型。可对可能发生的异常进行普通处理和清理。

第二种 特定异常处理

try
    
    
    catch(Exception)
    
        //特定异常处理
        
    

把一个异常类的名称作为参数,匹配该指定类或派生自它的异常类的异常。

第三种  带对象的特定异常处理

try
    
    
    catch(Exception ex)
    
        
      throw new Exception(ex.Message);
    

可提供关于异常的多种异常信息,匹配指定的异常或派生自它的异常类的异常。通过异常实例,可得到异常的详细信息。

try
    
    
    catch (Exception ex)
    
        //特定异常处理
        throw new Exception(ex.Message);
    
    finally  
        //出现异常后的处理机制

    

这里需要特别说明下,关于finally中的代码,不管异常是否被捕获,它都会被执行。

在finally中适合存放释放资源或后续处理的代码。

基础知识日更已经29天,如果大家还想继续查询,可以给个关注,感谢您的支持。

寄语

人生短暂,我不想去追求自己看不见的,我只想抓住我能看得见的。

原创不易,给个关注。

我是阿辉,感谢您的阅读,如果对你有帮助,麻烦点赞、转发  谢谢。

很高兴能和您成为朋友。

推荐阅读

分享给同做程序员的你我他

毕业四年,我当初是如何走上编程这条路的!

物联网工程专业的迷茫与抉择

以上是关于C#中类的异常处理的主要内容,如果未能解决你的问题,请参考以下文章

C# 中类的成员有哪些?

C#中类的创建和实例化

C# datagridview列绑定类中类的属性

c# 中类的实例化

#yyds干货盘点# C#中类的override和virtual

C#中类的override和virtual