1.异常处理Exception类及它的子类

C# 异常处理,一般使用trycatchfinally 和 throw等关键词,捕获和处理异常(特别说明,finally块 执行给定的语句,不管异常是否被抛出都会执行)

异常处理也是 AOP常用的实现,即面向切面编程设计思想

Exception类的子类 主要有两个System.ApplicationException 和 System.SystemException 类。

System.ApplicationException:支持由应用程序生成的异常。一般我们开发定义的异常都应派生自该类

System.SystemException:所有预定义的系统异常的基类

System.SystemException的子类有下面8个

        System.IO.IOException:处理 I/O 错误

        System.IndexOutOfRangeException:处理当方法指向超出范围的数组索引时生成的错误

        System.ArrayTypeMismatchException:处理当数组类型不匹配时生成的错误

        System.NullReferenceException:处理当依从一个空对象时生成的错误

       System.DivideByZeroException: 处理当除以零时生成的错误

        System.InvalidCastException:处理在类型转换期间生成的错误

        System.OutOfMemoryException:处理空闲内存不足生成的错误

        System.StackOverflowException:处理栈溢出生成的错误

代码如下:

using System;

namespace _1.异常处理
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                //引起异常的语句
            }
            #region  System.Exception 类派生的异常类
            catch (ApplicationException)// 支持由应用程序生成的异常。所以程序员定义的异常都应派生自该类
            {

                throw;
            }
            #region SystemException 类派生的预定义的异常类
            catch (System.IO.IOException)// 处理 I/O 错误
            {

                throw;
            }
            catch (System.IndexOutOfRangeException)//处理当方法指向超出范围的数组索引时生成的错误
            {

                throw;
            }
            catch (System.ArrayTypeMismatchException)//处理当数组类型不匹配时生成的错误
            {

                throw;
            }
            catch (System.NullReferenceException)//处理当依从一个空对象时生成的错误
            {

                throw;
            }
            catch (System.DivideByZeroException)//处理当除以零时生成的错误
            {

                throw;
            }
            catch (System.InvalidCastException)//处理在类型转换期间生成的错误
            {

                throw;
            }
            catch (System.OutOfMemoryException)//处理空闲内存不足生成的错误
            {

                throw;
            }
            catch (System.StackOverflowException)//处理栈溢出生成的错误
            {

                throw;
            }
            #endregion
            catch (SystemException)// 所有预定义的系统异常的基类
            {

                throw;
            } 
            #endregion
            catch (Exception)//C# 中的异常类主要是直接或间接地派生于 System.Exception 类
            {

                throw;
            }
            finally
            {
                // 执行给定的语句,不管异常是否被抛出都会执行
            }
            Console.WriteLine("Hello World!");
        }
    }

    //创建用户自定义异常类是派生自 ApplicationException 类
    public class MyException: ApplicationException
    {
        public MyException(string msg) : base(msg)
        {

        }
    }
}


           

你可能感兴趣的:(C#,高级篇,c#,exception)