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 一定会执行!
    }
}
复制代码

 

posted @   兴杰  阅读(321)  评论(0编辑  收藏  举报
编辑推荐:
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
阅读排行:
· 百万级群聊的设计实践
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)
点击右上角即可分享
微信分享提示