DELPHI中有一个Abort的函数,它的作用是引发一个无声的异常。
这种异常发生后,只有异常动作,但程序不会出现任何错误对话框。C#有没有这样对应的函数呢?

解决方案 »

  1.   

    try
    {
    }
    catch
    {
    //异常后的处理代码
    }
    catch里不弹出对话框不行吗?
      

  2.   

    就是二楼的方法,在catch块中写你要执行的操作就可以了。
    程序也不会中止
      

  3.   

    如果是:throw new Exception();
    程序发布运行后,执行到这句,就会出现一个系统的对话框,说有异常。或者在调试时出现异常未处理的框框,死活也通不过这句。晕,我要的是什么也没有出现,象是catch块什么都不做的话,
      

  4.   

    try
    {
    }
    catch
    {
    //嘘~~
    }
      

  5.   

    如果是:throw new Exception();
    程序发布运行后,执行到这句,就会出现一个系统的对话框,说有异常。或者在调试时出现异常未处理的框框,死活也通不过这句。晕,我要的是什么也没有出现,象是return 一样无条件返回。
    我要的是什么呢?我举个例:
        private void simpleButton1_Click(object sender, EventArgs e)
        {
          test();
          MessageBox.Show("已经运行到这里!");
        }    private void test()
        {
          Abort;
        }当程序执行simpleButton1_Click时,当中的这句:<<MessageBox.Show("已经运行到这里!");>> 是没有执行的,但系统也不能弹出任何的对话框和异常情况显示。有些人说:为什么不写成这样呢?
    private void simpleButton1_Click(object sender, EventArgs e)
    {
      if (test()==true)
        MessageBox.Show("已经运行到这里!");
    }private void test()
    {
      return false;
    }这是因为在实际情况,调用test之前,就已经调用了多个嵌套过程,如果能借用Abort,就可以一次过退出这些嵌套的过程。比使用返回值一个个来判断退出多个嵌套过程要方便得多。不知道有人明白我的意思吗?
      

  6.   

    其实就是throw new Exception
      

  7.   

    catch中什么都不做,是最寂静的。
    catch中做点什么,但不什么都不显示是安静的。
      

  8.   

    想了想,是不是这样:
    private void simpleButton1_Click(object sender, EventArgs e)
        {
          try{
              test();
              MessageBox.Show("已经运行到这里!");
              }
          catch
             {}
        }    private void test()
        {
          throw new Exception();
        }
      

  9.   

    不行,Application.Exit()是退出整个程序的....但还是终于有人明白了我的意思啰,呵呵....>>>>是想在调用的函数中,中止主调函数的执行。Delphi中使用Abort可能很方便实现这个.C#如果没有它的话,就只能一层层使用返回值判断,来退出主调函数了...
      

  10.   

    其实不必强求另外一门语言能够实现其他语言的某个函数,只要事务上能够有相同的效果就可以了,各门语言都有自己的设计思路,其实Abort这样的语句不应该滥用,一个好的代码结构不等于简单的代码结构,goto语句是大部分语言都支持但都不推荐的用法。一个事物逻辑应该只有一个入口和一个出口,更何况Abort这样悄悄地在另外一个控制过程中退出当前控制流程,这对于阅读或者调试你代码的其他人会带来一些不便,如果用.net实现这样一个流程的话,我个人觉得一下结构可以考虑
    private void button1_Click(object sender, EventArgs e)
            {
                try
                {
                    f1();
                }
                catch (Ex1 ex)
                {
                    Console.WriteLine(ex.Message);
                }
                catch(Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
                 
            }
            private void f1()
            {
                throw new Ex1("this is f1 abort");
            }        public class Ex1 : Exception
            {
                public Ex1(string str)
                    : base(str)
                { }
            }
      

  11.   

    或许你站在过程化的角度认为一个abort要用这么一堆代码实现,但是你站在程序结构的角度考虑的可以有另外一种感受