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;
                }
            }
  • 相关阅读:
    jQuery中.html(“xxx”)和.append("xxx")的区别和不同
    Jquery中对checkbox的各种“全选”或者“取消”功能实现(特别注意1.6+的一定不能使用attr来取属性了!用prop!)
    Jquery 中each循环嵌套的使用示例教程
    关于Jquery中的$.each获取各种返回类型数据的使用方法
    IMEI是什么? 怎样查手机串号IMEI
    linux useradd(adduser)命令参数及用法详解(linux创建新用户命令)
    linux 的useradd 命令的p选项
    Linux SSH远程文件/目录传输命令scp
    C++ 迭代器 基础介绍
    C++中map的一点疑惑...
  • 原文地址:https://www.cnblogs.com/chao202426/p/9337294.html
Copyright © 2011-2022 走看看