捕捉异常后,就会影响性能和速度。但是,如果不这样做,就会弹出那个可怕的对话框。例如:try{
  decimal pp=decimal.Parse(TextBox1.Text)* decimal.Parse(TextBox2.Text); 
  TextBoxResult.Text=pp.ToString(); 
}catch(OverFlowException){TextBoxResult.Text=@"The result is too Large!";}

我想改为try...finally的形式,但是要保证不会弹出错误警告。请问如何修改代码?非常感谢!

解决方案 »

  1.   

    try{
    .....你的代码
    }catch{
    什么都不作
    }
    finally{
    ...你的代妈
    }
      

  2.   

    catch(){}里面不写东西就可以了
      

  3.   

    使用结构化异常处理都会以牺牲一些性能为代价. 流程大致如下:当有异常时,清除一些资源后跳至catch块再执行,而finally呢?则不管是否有异常也必定会执行到。
    只要有try catch的结构,就会在第一种情况下做许多额外处理,从而导致性能上的下降. 就是说只要有catch{},就算里边是空的,只要它走过了catch,就会有性能损失。
    所以说这个异常捕捉是不可避免的。
    但是可以用代码检测把try块中可能发生异常的代码缩减到最小。如下:
    decimal d1;
                decimal d2;
                decimal d3;
                bool b1 = decimal.TryParse(TextBox1.Text, out d1);
                bool b2 = decimal.TryParse(TextBox2.Text, out d2);            if (!b1 || !b2)
                    TextBoxResult.Text = @"The result is too Large!";
                else
                {
                    try
                    {
                        TextBoxResult.Text = decimal.Multiply(d1, d2);
                    }
                    catch (System.OverflowException)
                    { TextBoxResult.Text = @"The result is too Large!"; } 
                }  
      
      

  4.   

    可以试一试catch里面什么都不写
      

  5.   

    try...finally一般没有必要,除非有无论如何必须要执行否则会出错的语句的需求。
    想到一个够严密但是比较BT的写法,嘿嘿,先去吃饭