一、异常处理的理解?

异常处理是指程序在运行过程中,发生错误会导致程序退出,这种错误,就叫做异常。

因此处理这种错误,就称为异常处理。

二、异常处理如何操作?

C# 异常处理时建立在四个关键词之上的:try、catch、finally 和 throw。

1、try:一个 try 块标识了一个将被激活的特定的异常的代码块。后跟一个或多个 catch 块。

2、catch:程序通过异常处理程序捕获异常。catch 关键字表示异常的捕获。

3、finally:finally 块用于执行给定的语句,不管异常是否被抛出都会执行。

例如如果你打开一个文件,不管是否出现异常文件都要被关闭。

4、throw:当问题出现时,程序抛出一个异常。使用 throw 关键字来完成。

语法示例:

try

{

   // 引起异常的语句

}

catch( ExceptionName e1 )

{

   // 错误处理代码

}

catch( ExceptionName e2 )

{

   // 错误处理代码

}

catch( ExceptionName eN )

{

   // 错误处理代码

}

finally

{

   // 要执行的语句

}

三、C#中的异常类

C# 异常是使用类来表示的。C# 中的异常类主要是直接或间接地派生于System.Exception

(1).由System.SystemException派生的异常类型:

System.AccessViolationException 在试图读写受保护内存时引发的异常。

System.ArgumentException 在向方法提供的其中一个参数无效时引发的异常。

System.Collections.Generic.KeyNotFoundException 指定用于访问集合中元素的键与集合中的任何键都不匹配时所引发的异常。

System.IndexOutOfRangeException 访问数组时,因元素索引超出数组边界而引发的异常。

System.InvalidCastException 因无效类型转换或显示转换引发的异常。

System.InvalidOperationException 当方法调用对于对象的当前状态无效时引发的异常。

System.InvalidProgramException 当程序包含无效Microsoft中间语言(MSIL)或元数据时引发的异常,这通常表示生成程序的编译器中有bug。

System.IO.IOException 发生I/O错误时引发的异常。

System.NotImplementedException 在无法实现请求的方法或操作时引发的异常。

System.NullReferenceException 尝试对空对象引用进行操作时引发的异常。

System.OutOfMemoryException 没有足够的内存继续执行程序时引发的异常。

System.StackOverflowException 挂起的方法调用过多而导致执行堆栈溢出时引发的异常。

(2).由System.ArgumentException派生的异常类型:

System.ArgumentNullException 当将空引用传递给不接受它作为有效参数的方法时引发的异常。

System.ArgumentOutOfRangeException 当参数值超出调用的方法所定义的允许取值范围时引发的异常。

(3).由System.ArithmeticException派生的异常类型:

System.DivideByZeroException 试图用零除整数值或十进制数值时引发的异常。

System.NotFiniteNumberException 当浮点值为正无穷大、负无穷大或非数字(NaN)时引发的异常。

System.OverflowException 在选中的上下文中所进行的算数运算、类型转换或转换操作导致溢出时引发的异常。

(4).由System.IOException派生的异常类型:

System.IO.DirectoryNotFoundException 当找不到文件或目录的一部分时所引发的异常。

System.IO.DriveNotFoundException 当尝试访问的驱动器或共享不可用时引发的异常。

System.IO.EndOfStreamException 读操作试图超出流的末尾时引发的异常。

System.IO.FileLoadException 当找到托管程序却不能加载它时引发的异常。

System.IO.FileNotFoundException 试图访问磁盘上不存在的文件失败时引发的异常。

System.IO.PathTooLongException 当路径名或文件名超过系统定义的最大长度时引发的异常。

(5).其他常用异常类型:

ArrayTypeMismatchException 试图在数组中存储错误类型的对象。

BadImageFormatException 图形的格式错误。

DivideByZeroException 除零异常。

DllNotFoundException 找不到引用的dll。

FormatException 参数格式错误。

MethodAccessException 试图访问私有或者受保护的方法。

MissingMemberException 访问一个无效版本的dll。

NotSupportedException 调用的方法在类中没有实现。

PlatformNotSupportedException 平台不支持某个特定属性时抛出该错误。

四、示例

class MyExceptionTest

{

    static double SafeDivision(double x, double y)

    {

        if (y == )

            throw new System.DivideByZeroException();

        return x / y;

    }

    static void Main()

    {

        double a = , b = ;

        double result = ;

        try

        {

            result = SafeDivision(a, b);

            Console.WriteLine("{0} divided by {1} = {2}", a, b, result);

        }

        catch (DivideByZeroException e)

        {

            Console.WriteLine("Attempted divide by zero.");

        }

    }

}

公众号:阅读原文

【基础】C#异常处理的总结的更多相关文章

  1. Python 基础之 异常处理

    python 基础之异常处理 说到异常处理,就得先问一下,什么是异常处理?  先来看一下,什么是异常? 异常就是:程序运行时发出的错误的信号. 异常的种类先来看一下: 一.常见的异常 Attribut ...

  2. c#基础之异常处理

    在开发过程中,经常遇到各种各样的小问题,很多是由于基础不牢固,没有经常总结导致的.遇到重复的问题可能可根据以往经验处理,但是对问题本身引发的原因进行深入的了解.工作很多年,但是c#基础像一层冰一样,可 ...

  3. c#基础之异常处理及自定义异常 从SQLServer转储数据到MySQL

    c#基础之异常处理及自定义异常 一.什么是c#中的异常? 异常是程序运行中发生的错误,异常处理是程序的一部分.c#中的异常类主要是直接或者间接的派生于 System.Exception类 ,也就是说S ...

  4. Python之路第八天,基础(10)-异常处理

    异常处理 1. 异常基础 python3 try: pass except Exception as ex: pass while True: num1 = input('num1:') num2 = ...

  5. Python开发基础-Day23try异常处理、socket套接字基础1

    异常处理 错误 程序里的错误一般分为两种: 1.语法错误,这种错误,根本过不了python解释器的语法检测,必须在程序执行前就改正 2.逻辑错误,人为造成的错误,如数据类型错误.调用方法错误等,这些解 ...

  6. windows内核基础与异常处理

    前两日碰到了用异常处理来做加密的re题目 所以系统学习一下windows内核相关 windows内核基础 权限级别 内核层:R0 零环 核心态工作区域 大多数驱动程序 应用层:R3 用户态工作区域 只 ...

  7. python基础之异常处理

    Python3 错误和异常 作为Python初学者,在刚学习Python编程时,经常会看到一些报错信息,在前面我们没有提及,这章节我们会专门介绍. Python有两种错误很容易辨认:语法错误和异常. ...

  8. Python基础、异常处理

    一.概述 错误与异常概念 异常也是对象, 基于Exception类.内置异常 异常处理.流程 try/except/else  处理python或你触发的异常 try/fianlly   不管有没有异 ...

  9. 黑马程序员——JAVA基础之异常处理机制

    ------- android培训.java培训.期待与您交流! ---------- 异常:就是程序在运行时出现不正常情况. 异常由来:问题也是现实生活中一个具体的事物,也可以通过java的类的形式 ...

  10. 一天一个Java基础——通过异常处理错误

    <Thinking in Java>上对这章的讲解不少,可见重要性,学习和总结一些主要的记录下来. 一.创建自定义异常 package Exception; class SimpleExc ...

随机推荐

  1. websocket技术分享

    开发环境: spring3+tomcat7+spring-websocket4 运行环境: windows.Linux 一.背景: 产品将要发布的消息或其他需要让客户提前知道的消息,在客户端和服务端建 ...

  2. Mac 下载安装MySQL

    step 1. 从官网上下载MySQL Community Server step 2. 安装MySQL step 3. 配置mysql和mysqladmin的alias $ vim ~/.bashr ...

  3. 使用vue-cli构建多页面应用+vux(三)

    上节中,我们成功的将vue-cli改造成了多入口,既然用了上简单的脚手架,那就希望用个合适的UI组件,去搜索了几个以后,最后选择了使用vux 贴上其vux的github地址  https://gith ...

  4. java8 Lambda表达式的新手上车指南(1)

    背景 java9的一再推迟发布,似乎让我们恍然想起离发布java8已经过去了三年之久,java8应该算的上java语言在历代版本中变化最大的一个版本了,最大的新特性应该算得上是增加了lambda表达式 ...

  5. 【代码学习】PHP 正则表达式

    一.正则表达式介绍 正则表达式是用于描述字符排列和匹配模式的一种规则,主要用于字符串的匹配.查找.替换.分割等操作 ------------------------------------------ ...

  6. 【知识学习】如何寻找真实IP

    1.多地点ping查询IP,如果都一样可能没有使用cdn,如果有cdn,尝试海外地点ping查询IP 2.ping一下没有WWW的域名,可能存在真实IP.比如www.baidu.com设置了cdn,那 ...

  7. 「7天自制PHP框架」第一天:路由与控制器

    我们为什么要使用路由? 原因1:一个更漂亮的URI 1.URI的改进 刚刚开始学PHP时,我们一定写过blog.php?id=1之类的URI,使用GET方式获取参数.这样的URI有两个缺点,一是容易被 ...

  8. 阿里云CentOS7.2服务器的安装

    第一步:下载服务器系统ISO安装文件 我使用的是阿里云的镜像:因为阿里云的服务在国内相对比较成熟 服务器镜像下载如下:http://mirrors.aliyun.com/centos/7/isos/x ...

  9. [原创] 绿色单文件封装程序GreenOne V3.0

    1.原理 将包含可执行文件的多个文件 调用Winrar,创建自解压格式压缩文件 设置高级自解压选项中的文本和图标,设置解压后运行的文件为选中的可执行文件. 这种创建单文件封装其实也就是一个Winrar ...

  10. 使用OpenOffice实现各种文档转pdf或者html文档

    ---恢复内容开始--- 最近在做项目时需要写一个功能,将doc,ppt,xsl等文档做在线预览.网上查了很多资料,开始适用poi将文档转成pdf没成功,后来使用了OpenOffice4 + jodc ...