zoukankan      html  css  js  c++  java
  • Exception.InnerException 属性的使用

    例子(部分代码):

    protected void Button3_Click(object sender, EventArgs e)
    {
    try
    {
    Divide(10,0);
    }
    catch (Exception ex)
    {
    Label3.Text = "产生的异常信息如下:<br/>";
    Label3.Text += ex.Message + "<br/>";
    ////直接使用InnerException属性可以获取内部异常的信息
    Label3.Text += ex.InnerException.Message;
    }
    }
    //div方法将抛出其产生的异常, 并传递内部异常
    private double Divide(int x, int y)
    {
    try
    {
    return DivideOperation(x, y);
    }
    catch (Exception ex)
    {
    //使用Exception重载的构造函数传递内部异常
    throw new Exception("来自Divide方法的异常", ex);
    }
    }
    ////产生一个被0除的异常
    private double DivideOperation(int x, int y)
    {
    try
    {
    return x / y;
    }
    catch (DivideByZeroException ex)
    {
    throw new DivideByZeroException("产生了一个试图除以零的异常, 来自DivideOperation方法!");
    }
    }

    在Divide方法中,调用了DivideOperation方法,首先DivideOperation方法会抛出一个DivideByZero
    -Exception类型的异常,Divide方法将捕获该异常,但是Divide并不是直接吞没了该异常,而是抛出了一个异常,并将由DivideOperation方法产生的异常作为Exception构造函数的一个参数向外传递,这种传递异常的方式称为异常传递。当捕捉这种嵌套类型的异常时,开发人员可以使用Exception类的InnerException属性来获取内部异常的详细信息,这是一个Exception类型的属性

    输出结果:

    产生的异常信息如下:

    来自Divide方法的异常

    产生了一个试图除以零的异常, 来自DivideOperation方法!

  • 相关阅读:
    【转载】狐狸的故事
    【android】 资源路径
    【随笔】居然又玩了两天
    【android】 新浪oauth,进度条,AnimationDrawable,Toast,android预定义style
    【随笔】写下现在所想的,开始写博客
    【转】让我们如此享受的慢性毒药
    如何生成SPFILE文件
    如何区别存储过程中的EXIT与RUTURN
    如何设置虚拟机网络
    如何写SQLPLUS例子
  • 原文地址:https://www.cnblogs.com/tianguook/p/2843335.html
Copyright © 2011-2022 走看看