【基础】C#异常处理的总结

一、异常处理的理解?

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

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

二、异常处理如何操作?

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 == 0)

            throw new System.DivideByZeroException();

        return x / y;

    }

    static void Main()

    {

        double a = 98, b = 0;

        double result = 0;

        try

        {

            result = SafeDivision(a, b);

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

        }

        catch (DivideByZeroException e)

        {

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

        }

    }

}

公众号:阅读原文

时间: 2024-08-05 05:57:16

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

J2SE基础:11.异常处理

1:异常的概念: 异常是程序在执行时发生的事件(异常发生在运行期间). 程序出现错误,打断原本的执行流程. 2:Java中处理异常. 在Java中,异常被封装成一个对象.(属性和方法) 3:异常产生 在Java程序的执行过程中,如果出现了异常事件,就会生成一个异常对象. 生成的异常对象将传递给Java运行时系统,这一异常的产生和提交过程称 为引发异常. 4:异常的分类 异常的根类(throwable) 错误:Error(程序无法处理的错误) 异常:Exception(可以处理的错误.程序可以捕获

【javaScript基础】异常处理

理解异常在javaScript面向对象编程是非常重要的,异常是一种非常强大的处理错误的方式. 错误处理 首先我们来看一个有问题的代码: nonexistant(); 在以上这个例子中,访问一个不存在的变量,在这种情况下,程序会怎么处理?很早以前的处理方式就是程序直接崩溃死掉,所以我们不能容忍这种处理方式,需要有办法来处理. 最简单的处理方式是先检查,像这样: if (window.func) { func(); } 上面这种处理方式,仍然可能还会出现错误.因为window.func可能不是一个函

Python 基础之 异常处理

python 基础之异常处理 说到异常处理,就得先问一下,什么是异常处理?  先来看一下,什么是异常? 异常就是:程序运行时发出的错误的信号. 异常的种类先来看一下: 一.常见的异常 AttributeError 试图访问一个对象没有的树形,比如foo.x,但是foo没有属性x IOError 输入/输出异常:基本上是无法打开文件 ImportError 无法引入模块或包:基本上是路径问题或名称错误 IndentationError 语法错误(的子类) :代码没有正确对齐 IndexError

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

异常处理 错误 程序里的错误一般分为两种: 1.语法错误,这种错误,根本过不了python解释器的语法检测,必须在程序执行前就改正 2.逻辑错误,人为造成的错误,如数据类型错误.调用方法错误等,这些解释器是不会进行检测的,只有在执行的过程中才能抛出的错误 异常 异常是python解释器在运行程序的过程中遇到错误所抛出的信息,如: Python异常种类: 常用异常: 1 AttributeError 试图访问一个对象没有的树形,比如foo.x,但是foo没有属性x 2 IOError 输入/输出异

java基础篇---异常处理

认识异常 异常时导致程序中断运行的一种指令流,如果不对异常进行正确的处理,则可能导致程序的中断执行,造成不必要的损失,所以在程序的设计中必须考虑各种异常的发生,并正确的做好相应的处理,这样才能保证程序的正常执行,在java使用一种称为异常处理的错误捕获机制处理. 为了能在程序中处理异常情况,必须研究程序中可能会出现的错误和问题 用户输入错误() 设备错误 物理限制(磁盘满了,) 代码错误(程序方法有可能无法正常执行) 处理异常 异常处理的简单格式 如果在try语句块中的任何代码抛出一个在catc

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

<Thinking in Java>上对这章的讲解不少,可见重要性,学习和总结一些主要的记录下来. 一.创建自定义异常 1 package Exception; 2 3 class SimpleException extends Exception{} 4 5 public class InheritingException{ 6 7 public void f() throws SimpleException { 8 System.out.println("Throw Simple

_14python基础_异常处理

#coding:utf-8 #======================异常处理============================ '''捕捉异常可以使用try/except语句. try/except语句用来检测try语句块中的错误,从而让except语句捕获异常信息并处理''' try: #正常操作 file = open('data.txt', 'r') file.readline() except IOError,msg: # 发生异常,执行这块代码 print msg else

python基础之异常处理

--引入 程序运行时,难免出现bug,当出现bug时,用户可能很难明白那一堆报错代码到底是个什么东西,为了让用户能更清楚知道错误原因或者直接对用户将此错误屏蔽,异常处理就应运而生. --格式 try: #输入要运行的代码 pass except NameError as err: #将该类型的错误捕获 pass except Exception as err: #将所有类型的错误捕获 pass else: #如果没有错误,则运行该段代码 pass finally: #不管是否存在错误,都运行该段

Python基础、异常处理

一.概述 错误与异常的概念,区别 内置异常 为什么使用异常.场景.作用 异常处理 try/except/else try/fianlly raise assert 自定义异常类

Think in Java 笔记_Chapter12_1_Exception基础_异常处理2

异常处理方式2 throw向上抛出 package cn.seven.shengsiyuan.exception; /* * 2015年04月05日13:05:35 * Location:501 * * 异常处理方法2:抛出异常,由调用该方法的方法 进行处理该异常 */ public class ExceptionThrowDemo { public static void main(String[] args) throws Exception { // TODO Auto-generated