官术网_书友最值得收藏!

1.8 應(yīng)用程序的異常處理

現(xiàn)代軟件工程有一個(gè)基本的出錯(cuò)處理原則:就近處理程序異常。比如說,你有如下Class A和Class B兩段程序:

  public Class A
  {
//...
      protected  float Divide( float x, float y )
    {
      float z = x/y;
      return z;
    }
  }
  public Class B: A
  {
  //...
  public void Calc()
  {
      float[]  x={100.2, 22.5,.....};
      float[]  y =( 500.0, 2.5,....};
      for( int i = 0; i < x.Length; i++ )
      {
            z= divide( y[i],x[i]);
            //...
      }
  }
  }

這兩段程序在正常的情況下,沒什么問題,但如果Class A中的y為0,那么z=x/y就會(huì)出錯(cuò),一般情況下,我們需要把Class A中的方法Divide改為:

  protected float Divide(float x, float y)
      {
        float z = 0;
        try
        {
            z = y / x;
        }
        catch
        {
            //處理異常
        }
        return z;
      }

即我們需要在最可能出現(xiàn)異常的地方加上try{} catch{} ,從而對(duì)程序異常加以處理。 這一原則說起來簡單,做起來難,一旦有一個(gè)地方?jīng)]有對(duì)異常進(jìn)行適當(dāng)?shù)奶幚恚赡軙?huì)導(dǎo)致整個(gè)軟件,甚至整個(gè)操作系統(tǒng)的崩潰。WPF的Application類中有一個(gè)事件:DispatcherUnhandledException,這個(gè)事件在應(yīng)用程序未對(duì)其中的異常加以處理的情況下發(fā)生。我們可以對(duì)該事件進(jìn)行處理,從而為應(yīng)用程序把好最后的大門:

  protected override void OnStartup(StartupEventArgs e)
      {
        ...
        this.DispatcherUnhandledException += new
        System.Windows.Threading.
        DispatcherUnhandledExceptionEventHandler(
        App_DispatcherUnhandledException);
      }
      void App_DispatcherUnhandledException(object sender,
            System.Windows.Threading.
            DispatcherUnhandledExceptionEventArgs e)
      {
      //對(duì)程序異常進(jìn)行處理
      }
主站蜘蛛池模板: 黔西| 吉首市| 扬州市| 安多县| 弋阳县| 东光县| 综艺| 皮山县| 大宁县| 治多县| 白河县| 梁河县| 兴化市| 北票市| 板桥市| 依兰县| 县级市| 韶山市| 外汇| 招远市| 山阴县| 鹤庆县| 东乌| 舞钢市| 宽城| 南皮县| 关岭| 襄垣县| 松原市| 灵宝市| 汶川县| 洪洞县| 桃园市| 乡城县| 铜梁县| 罗甸县| 科技| 额敏县| 资源县| 滁州市| 乳山市|