不想catch某种特定的异常,怎样做?
在.NET中 有没有一种方法 使某种特定的异常不被catch到?或者说catch到了不做任何操作?举例来说
我定义了一个异常叫 TestException,当运行下面的语句时
try
{
throw new TestException();
}
catch(Excepton ex)
{
MessageBox.Show(ex.Message);
}
我想得到这样的效果,当catch语句catch到的异常类型是TestException时,不运行“MessageBox.Show(ex.Message);”语句
直接跳过catch语句,也就是忽略这种异常.
不要跟我说加if语句判断,我是想找一种统一的处理机制,不用在每种类似这样的情况下都去编码判断。 --------------------编程问答--------------------
--------------------编程问答-------------------- 我已经说过了,不想每次都这么判断,你的这个加if语句没什么区别。
try
{
throw new TestException();
}
catch(TestException)
{
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
我想要的是有一个公共机制,能自动处理。比如catch到TestException之后自动触发一个事件,那个事件去处理这个异常,然后catch里面的就不执行了。 --------------------编程问答-------------------- 来砸场子么 --------------------编程问答-------------------- 既然要捕获具体异常,要么分别捕获,要么加判断,即便是捕获所有异常,到时候还得根据类型判断出具体异常 --------------------编程问答-------------------- 既然不想捕获,那就别throw啊…… --------------------编程问答--------------------
同上 --------------------编程问答--------------------
同上 --------------------编程问答-------------------- 我这么用自然有我这么用的道理和原因,我就想知道有没有这种机制。 --------------------编程问答-------------------- 没有这样的机制,你可以参考一下Enterprise Library里的ExceptionHandling模块 --------------------编程问答-------------------- 异常会沿着调用堆栈向上传播,直到遇到对应的处理程序为止。您是希望异常传播到哪里停止呢? --------------------编程问答-------------------- 知道也不告诉你 --------------------编程问答--------------------
这个方法挺好的,不想用再throw,如果你真心需要这个样子的需求,厄,你需要检查下自己的软件是否有设计上的问题.否则,楼上不会有那么多人说你来砸场子的了,楼主淡定. --------------------编程问答-------------------- 诡异的需求都来自于诡异的设计,其中绝大多数诡异的需求都是程序员自己杜撰出来的,要么是对真实需求的错误解读,要么是源自自己那想当然的结构设计。 --------------------编程问答--------------------
--------------------编程问答-------------------- 函数定义差了个返回值 void --------------------编程问答-------------------- 诡异的需求都来自于诡异的设计,其中绝大多数诡异的需求都是程序员自己杜撰出来的,要么是对真实需求的错误解读,要么是源自自己那想当然的结构设计。
public static TryCatch(Action action)
{
try
{
action();
}
catch(TestException)
{
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
}
TryCatch(()=>throw new TestException());
补充:.NET技术 , .NET Framework