日期:2014-05-19  浏览次数:20752 次

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

C#有没有这样对应的函数呢?

------解决方案--------------------
我明白楼主的意思,是想在调用的函数中,中止主调函数的执行。
我这两天写代码也正遇到这样的需求。不过也没想出来怎么方便地解决。
只能帮楼主顶下
------解决方案--------------------
其实不必强求另外一门语言能够实现其他语言的某个函数,只要事务上能够有相同的效果就可以了,各门语言都有自己的设计思路,其实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)
{ }
}
------解决方案--------------------
或许你站在过程化的角度认为一个abort要用这么一堆代码实现,但是你站在程序结构的角度考虑的可以有另外一种感受