C#异常处理详解

 更新时间:2013年10月14日 14:53:22   作者:  
这篇文章介绍了C#异常处理,有需要的朋友可以参考一下

异常介绍

1、System.Exception类

Message属性:发生异常的原因和异常的内容

Souce属性:抛出异常程序集的名称

StackTrace属性:发生异常的方法调用情况

InnerException属性:次异常中包含的异常


2、try{}catch{}finally{}

处理异常

a、不带参数的catch和catch(Exception)是有区别的

catch(Exception)可以捕获所有以Exception类派生的异常,而不带参数的catch可以捕获所有异常,不管异常是不是从Exception类派生。

b、与catch配套的catch和finally是可选的,但二者必选其一。一个try可对应多个catch,但一个try只能对应一个finally。

c、不论try中是否发生异常,finally中的语句一定会被执行。

异常传播

如果异常发生后,没有被相应的catch捕获,那么异常将沿调用堆栈逐渐向上传递,直到遇到合适的catch语句或传递到最底层的调用方法为止。如都没有找到相应的catch,则异常交付.net公共语言运行时,公共语言运行时弹出一个对话框来显示异常信息。


抛出异常throw

1、throw 变量名;

必须是Exception异常或有Exception派生的类型

2、throw;

这个throw语句只有一个throw关键字,只能用在catch语句块中,该语句的意思是抛出当前catch语句所捕获的异常。

自定义异常

遵循原则

1、避免使用深的异常类继承层次结构

2、自定义异常类必须继承System.Exception类或其他几种基本常见异常类

3、自定义异常类名称要以Exception结尾

4、自定义异常类应该可以序列化

5、自定义异常类应该至少实现与Exception类相同的以下四个构造函数

复制代码 代码如下:

public MyException(){}

public MyException(string message){}

public MyException(string message,Exception inner){}

protected MyException(System.Runtime.Serialization.SerializationInfoinfo,System.Runtime.Serialization.StreamingContext context){}


6、自动插入自定义异常类框架

在编辑器中输入Exception并按键,即可得到自定义异常类框架。

相关文章

  • C#如何修改项目名图文详解

    C#如何修改项目名图文详解

    最近开发工作接近尾声,客户来要求更换项目的名称,差不多要变更整个解决方案中项目名称,引用等等,这个工作量还是很大的,这篇文章主要给大家介绍了关于C#如何修改项目名的相关资料,需要的朋友可以参考下
    2023-01-01
  • C#中的out参数、ref参数和params可变参数用法介绍

    C#中的out参数、ref参数和params可变参数用法介绍

    这篇文章介绍了C#中的out参数、ref参数和params可变参数用法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-01-01
  • opencvsharp瑕疵检测的实现示例

    opencvsharp瑕疵检测的实现示例

    本文主要介绍了opencvsharp瑕疵检测的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-05-05
  • C#实现在窗体上的统计图效果

    C#实现在窗体上的统计图效果

    这篇文章主要为大家详细介绍了C#实现在窗体上的统计图效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • Unity命令行打包WebGL的示例代码

    Unity命令行打包WebGL的示例代码

    这篇文章主要介绍了Unity命令行打包WebGL的相关知识,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-02-02
  • C#实现写系统日志的方法

    C#实现写系统日志的方法

    这篇文章主要介绍了C#实现写系统日志的方法,涉及C#针对系统日志的创建、写入及删除等技巧,非常具有实用价值,需要的朋友可以参考下
    2015-08-08
  • unity实现QQ截图功能

    unity实现QQ截图功能

    这篇文章主要为大家详细介绍了unity实现QQ截图功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-04-04
  • 深入多线程之:深入生产者、消费者队列分析

    深入多线程之:深入生产者、消费者队列分析

    本篇文章是对生产者与消费者队列进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • c# Process.Start()找不到系统文件的解决方法

    c# Process.Start()找不到系统文件的解决方法

    vs1027在X64应用程序下执行process.start()时,OK;但是在X86应用程序下执行process.start(),报错:找不到系统文件,本文就详细的介绍一下解决方法,感兴趣的可以了解一下
    2023-09-09
  • 简单了解C#设计模式编程中的桥接模式

    简单了解C#设计模式编程中的桥接模式

    这篇文章主要介绍了C#设计模式编程中的桥接模式,桥接模式经常应用于解耦逻辑层与数据操作层,需要的朋友可以参考下
    2016-02-02

最新评论