zoukankan      html  css  js  c++  java
  • try catch 学习记入

    执行过程

    public void method(Action action)
    {
        //2.method执行中
        try
        {
            action(); //3.调用委托
            string x = "5"; //如果action执行时出现了error,但是内部有catch机制并且没有继续throw出来,那么这里"会"执行
        }
        catch (Exception ex)
        {
            //8.捕获error
            string x = ex.Message; //如果action执行时出现了error,但是内部有catch机制并且没有继续throw出来,那么这里"不会"执行
        }
    }
    protected void Page_Load(object sender, EventArgs e)
    {
        try
        {
            //1.调用method函数,并且传入委托
            method(delegate()
            {
                //4.执行委托函数
                try
                {
                    throw new Exception("x"); //5.error 出现 
                }
                catch (Exception ex)
                {
                    string x = ex.Message; //6.捕获error 
                    throw ex; //7.把error传递下去 (如果没有把error传递,那么外部的catch就不会触发了)
                }
            });
            string xyx = "z"; //9.因为method函数中的catch没有在throw所以会执行这里
        }
        catch (Exception ex)
        {
            string x = ex.Message;
        }
        finally
        { 
            //10 finally 一定会执行!
        }
    }

    重点 catch有没有继续throw, finally一定会执行

    自定义catch 

    只要一个类继承了System.Exception 它就可以作为一个catch , 可以被throw

    一个try 可以有多个 catch(不同的Class处理)

    简单的说 throw new someClass 就是丢一个对象,new someClass()可以像普通的实例化一样,写一些初始化等等。

    catch 捕获到的就是这个对象,就是一般的对象咯,一样可以调用属性或者方法等等。

    public class MyEx : System.Exception
    {       
        public MyEx() : base() { }      
        public MyEx(string message, Exception innerException) : base(message, innerException) { }
        public MyEx(Int64 number) //初始化
        {
            this.number = number;
        }
        public Int64 number { get; set; }
    }
      
    protected void Page_Load(object sender, EventArgs e)
    {
        try
        {
            throw new MyEx(5);
        }
        catch (MyEx ex)
        {
            Int64 z = ex.number; //调用公有属性
        }
        catch (Exception ex)
        {
            string x = ex.Message;
        }
        finally
        { 
            //10 finally 一定会执行!
        }
    }
  • 相关阅读:
    QQ家园熄灭不了解决方法
    那时我们还年轻[转]
    QQ游戏图标熄灭大全
    FlashDevelop快捷键
    linux 全局搜索某一文件并将文件内容并进行替换的命令
    navigate 10.0.5 regist cn
    线程、socket、stl 以及并发设计
    drupal真不错
    网卡问题解决思路linux版
    socket错误:Program received signal SIGPIPE, Broken pipe
  • 原文地址:https://www.cnblogs.com/keatkeat/p/3990149.html
Copyright © 2011-2022 走看看