设为首页 加入收藏

TOP

C#基础之异常处理及自定义异常(一)
2018-12-27 14:14:03 】 浏览:397
Tags:基础 异常 处理 定义

一、什么是C#中的异常?


异常是程序运行中发生的错误,异常处理是程序的一部分。C#中的异常类主要是直接或者间接的派生于 System.Exception类 ,也就是说System.Exception类是所有预定义的系统异常的基类。错误的出现并不总是编写应用的程序员的原因,有的时候应用程序也会因为终端用户的操作不当而发生错误。无论如何,在编写程序前都应该预测应用程序和代码中出现的错误。


二、常见的异常都有哪些?


        ①    ArrayTypeMismatchException


        向数组中存数据时,存入的数据与数组定义的数据类型不同的时候便会出现该异常


        ②    DivideByZeroException


        用零除整数时引发该异常


        ③    IndexOutOfRangeException


        数组越界异常


        ④    NullReferenceException


        对象引用为空异常


        ⑤    OverflowException


        算数运算溢出


        ⑥    InvalidCastException


        运行时强制转换无效异常


三、异常处理


        使用如下代码结构来捕获和处理异常


try{
    //try块中包含容易产生异常的代码
}
catch{
    //异常处理代码
}
finally{
    //用于消除try块中分配的任何资源
    //以及即使发生异常也需要继续运行的代码
}


其中finally代码块是try-catch结构执行完成后,无论是否发生异常,finally代码块都会执行。即便是写代码时在try-catch结构里return了,仍旧是会执行了finally代码块之后再去return。


接下来看一个简单的异常捕获及处理的例子:


public class MyException
    {
        public static void Main()
        {
            try
            {
                A();
                B();
                C(null);
            }
            //捕获A,B,C方法抛出的异常
            catch (Exception ex)
            {
                //打印出异常信息
                Console.WriteLine(ex);
                Console.ReadKey();
            }
        }


        static void A()
        {
            // throw语法.
            try
            {
                //引发零除异常
                int value = 1 / int.Parse("0");
            }
            catch
            {
                //捕获到异常不做处理继续抛出异常
                throw;
            }
        }


        static void B()
        {
            // 过滤异常类型.
            try
            {
                int[] array = new int[]{ 1, 2, 3 };
                //引发数组越界异常
                array[6] = 4;
            }
            //捕获到数组越界异常
            catch (IndexOutOfRangeEx

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Python 函数调用&定义函数&函数参.. 下一篇Python中命名空间与作用域使用总结

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目