zoukankan      html  css  js  c++  java
  • c#基础学习(0719)之异常处理

    异常处理的一般代码模式

    try
                {
                    //可能发生异常的代码
                    //当try中某行代码发生异常后,从该行代码开始,后面的代码都不会继续执行,
                    //程序直接跳转到catch块中进行执行
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);//可以看到异常的原因
                    //对异常的处理
                    throw;//继续向上抛出异常
                }
                finally
                {
                    //不管是否发生异常都会执行
                }

    atch块的几种写法

                try
                {
                    int n = 10, m = 0;
                    int r = n / m;
                    Console.WriteLine(r);
                }
                ////第一种:这种写法可以捕获try块中的所有异常
                //catch 
                //{
                //    Console.WriteLine("发生一场了!");
                //    //throw;
                //}
                ////第二种:
                //catch(Exception ex)
                //{
                //    Console.WriteLine("发生异常了!");
                //    Console.WriteLine(ex.Message);//发生异常的消息
                //    Console.WriteLine(ex.Source);//那个对象中发生异常
                //    Console.WriteLine(ex.StackTrace);//异常相关信息(那个位置第几行第几列)
                //}
                //第三种:对不同的异常,使用不同的方式开处理(使用多个不同的catch块来捕获异常)
                catch(NullReferenceException e)
                {
                    //空指针异常
                    Console.WriteLine("空指针异常:{0}",e.Message);
                }
                catch(DivideByZeroException e)
                {
                    //除数为0的异常
                    Console.WriteLine("除数为0的异常,详细信息:{0}",e.StackTrace);
                }
                catch(ArgumentException e)
                {
                    //参数异常
                    Console.WriteLine("参数异常,详细信息:{0}",e.StackTrace);
                }
                catch(Exception e)
                {
                    //捕获其余所有的异常
                    Console.WriteLine(e.StackTrace);
                }
                finally
                {
                    Console.WriteLine("finally中的代码!!");
                }
                Console.ReadKey();

     手动抛出异常及使用throw继续向上抛出异常

        static void Main(string[] args)
            {
                #region 手动抛出异常
                //while (true)
                //{
                //    //尽量使用逻辑判断来避免异常处理代码
                //    try
                //    {
                //        Console.WriteLine("请输入一个人名");
                //        string name = Console.ReadLine();
                //        if (name == "超哥")
                //        {
                //            //手动抛出异常
                //            throw new Exception("姓名不合法!");
                //        }
                //        else
                //        {
                //            Console.WriteLine("姓名合法:{0}", name);
                //        }
                //    }
                //    catch (Exception ex)
                //    {
                //        Console.WriteLine("发生异常了!!");
                //        Console.WriteLine(ex.Message);
                //        Console.WriteLine(ex.StackTrace);
                //    }
                //}
                #endregion
    
                #region 异常
                M2();
                Console.ReadKey();
                #endregion
            }
            static void M2()
            {
                Console.WriteLine("===========");
                Console.WriteLine("===========");
                try
                {
                    M1();
                }
                catch (Exception)
                {
                    Console.WriteLine("M1方法发生异常了!");
                    throw;
                }
                Console.WriteLine("===========");
                Console.WriteLine("===========");
            }
            static void M1()
            {
                try
                {
                    int n = 10, m = 0;
                    int r = n / m;
                    Console.WriteLine("结果是:{0}", r);
                }
                catch (Exception)
                {
                    Console.WriteLine("捕获了该异常并且已经做了相观的处理!");
                    //再catch中使用throw;语句,并且这种用法只能用在catch块中
                    //throw:表示将当前异常继续向上抛出。
                    throw;
                }
            }
  • 相关阅读:
    linux —— 学习笔记(汇总)
    linux —— ubuntu 初次安装问题
    更改CMD默认的初始路径
    深入浅出理解linux inode结构
    重拾简单的linux指令之info 【转】
    Python 中数据的序列化和反序列化(json处理)
    day07
    Python 的反射机制
    Python 的 __new__()方法与实例化
    Classes as objects
  • 原文地址:https://www.cnblogs.com/chao202426/p/9337294.html
Copyright © 2011-2022 走看看