当前位置:编程学习 > C#/ASP.NET >>

不想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语句判断,我是想找一种统一的处理机制,不用在每种类似这样的情况下都去编码判断。 --------------------编程问答--------------------

try
{
throw new TestException();
}
catch(TestException)
{

}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}

--------------------编程问答-------------------- 我已经说过了,不想每次都这么判断,你的这个加if语句没什么区别。
我想要的是有一个公共机制,能自动处理。比如catch到TestException之后自动触发一个事件,那个事件去处理这个异常,然后catch里面的就不执行了。 --------------------编程问答-------------------- 来砸场子么 --------------------编程问答-------------------- 既然要捕获具体异常,要么分别捕获,要么加判断,即便是捕获所有异常,到时候还得根据类型判断出具体异常 --------------------编程问答-------------------- 既然不想捕获,那就别throw啊…… --------------------编程问答--------------------
引用 5 楼  的回复:
既然不想捕获,那就别throw啊……


同上 --------------------编程问答--------------------
引用 6 楼  的回复:
引用 5 楼  的回复:

既然不想捕获,那就别throw啊……


同上

同上 --------------------编程问答-------------------- 我这么用自然有我这么用的道理和原因,我就想知道有没有这种机制。 --------------------编程问答-------------------- 没有这样的机制,你可以参考一下Enterprise Library里的ExceptionHandling模块 --------------------编程问答-------------------- 异常会沿着调用堆栈向上传播,直到遇到对应的处理程序为止。您是希望异常传播到哪里停止呢? --------------------编程问答-------------------- 知道也不告诉你 --------------------编程问答--------------------
引用 1 楼  的回复:
C# code

try
{
    throw new TestException();
}
catch(TestException)
{

}
catch(Exception ex)
{
    MessageBox.Show(ex.Message);
}

这个方法挺好的,不想用再throw,如果你真心需要这个样子的需求,厄,你需要检查下自己的软件是否有设计上的问题.否则,楼上不会有那么多人说你来砸场子的了,楼主淡定. --------------------编程问答-------------------- 诡异的需求都来自于诡异的设计,其中绝大多数诡异的需求都是程序员自己杜撰出来的,要么是对真实需求的错误解读,要么是源自自己那想当然的结构设计。 --------------------编程问答--------------------

public static TryCatch(Action action)
{
  try
  {
    action();
  }
  catch(TestException)
  {
  }
  catch(Exception ex)
  {
    MessageBox.Show(ex.Message);
  }
}

TryCatch(()=>throw new TestException());
--------------------编程问答-------------------- 函数定义差了个返回值 void --------------------编程问答-------------------- 诡异的需求都来自于诡异的设计,其中绝大多数诡异的需求都是程序员自己杜撰出来的,要么是对真实需求的错误解读,要么是源自自己那想当然的结构设计。
补充:.NET技术 ,  .NET Framework
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,