如:
 public void something()
        {
             try
            {
               ..............
            }
            catch (Exception e1)
            {
                MessageBox.Show(e1.ToString());
            }
 
        }
这个函数在出现异常时,并不会停止,其它程序仍然会调用该函数。
如何让messagebox.show只引出一个对话框?

解决方案 »

  1.   

    你要明白
    trycatch是捕获错误并不是停止错误
    比如void a
    {
    try
    {
    //如果这里出错
    }
    catch
    {
    //走这里
    }
    a=111;//出错后在try外的这句并不会不走,因为程序认为,你在catch里已经将错误处理掉了,所以这里还可以走下去!!!除非你不用try系统会捕获错误,然后询问你是否继续(就是出个大叉的对话框)
    }
      

  2.   

    这种情况下如何让messagebox.show只引出一个对话框?
      

  3.   

    try
    {
    里捕捉异常
    }
    catch
    {
    里处理异常
    } public void something() 
            { 
                 try 
                { 
                   .............. 
                } 
                catch (Exception e1) 
                { 
                    //错误捕捉已在这里处理了,就不会往上冒泡,所以出现你的情况
                    MessageBox.Show(e1.ToString()); 
                    //如果你不处理,可以继续抛出
                      //throw
                } 
            } 
      

  4.   

    如果你一定要只引出一个对话框可以用一个全局变变标识一下private bool hasShow=false;
    public void something() 
            { 
                 try 
                { 
                   .............. 
                } 
                catch (Exception e1) 
                { 
                  if(!hasShow)
                  {
                        MessageBox.Show(e1.ToString()); 
                      hasShow=true;
                  }
                } 
            } 
      

  5.   


     public void something() 
            { 
                 try 
                { 
                   .............. 
                } 
                catch (Exception e1) 
                { 
                    MessageBox.Show(e1.ToString()); 
                    return;//返回,不在执行下面的语句
                } 
      
            } 
      

  6.   

    楼主是不是这个意思
    public void something() 
            { 
                 try 
                { 
                   .............. 
                } 
                catch (Exception e1) 
                { 
                    MessageBox.Show(e1.ToString()); 
                } 
            finally
            {
                .......
            }
    }
      

  7.   

    用全局变量,这样最简单,难一点的就是自己写窗体
    来个简单的吧
    bool msgFlag=false;
    try
    {}
    catch(Excepation ex)
    {
    if(!msgFlag)
    {
    DialogResult obj=MessageBox.show(ex.message(),"错误",MessageBoxButtons.OK);
    if(obj != DialogResult.OK)//对话框没有关闭
    {
    msgFlag=true;
    }
    }
    }