不想catch某种特定的异常,怎样做?

lubiaopan 2012-08-01 02:24:55
在.NET中 有没有一种方法 使某种特定的异常不被catch到?或者说catch到了不做任何操作?
举例来说
我定义了一个异常叫 TestException,当运行下面的语句时
try
{
throw new TestException();
}
catch(Excepton ex)
{
MessageBox.Show(ex.Message);
}
我想得到这样的效果,当catch语句catch到的异常类型是TestException时,不运行“MessageBox.Show(ex.Message);”语句
直接跳过catch语句,也就是忽略这种异常.
不要跟我说加if语句判断,我是想找一种统一的处理机制,不用在每种类似这样的情况下都去编码判断。
...全文
1185 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
yym305890519 2012-08-07
  • 打赏
  • 举报
回复
诡异的需求都来自于诡异的设计,其中绝大多数诡异的需求都是程序员自己杜撰出来的,要么是对真实需求的错误解读,要么是源自自己那想当然的结构设计。
superliu1122 2012-08-06
  • 打赏
  • 举报
回复
函数定义差了个返回值 void
superliu1122 2012-08-06
  • 打赏
  • 举报
回复

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

TryCatch(()=>throw new TestException());
cheng2005 2012-08-06
  • 打赏
  • 举报
回复
诡异的需求都来自于诡异的设计,其中绝大多数诡异的需求都是程序员自己杜撰出来的,要么是对真实需求的错误解读,要么是源自自己那想当然的结构设计。
wushuai1346 2012-08-04
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

C# code

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

}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
[/Quote]
这个方法挺好的,不想用再throw,如果你真心需要这个样子的需求,厄,你需要检查下自己的软件是否有设计上的问题.否则,楼上不会有那么多人说你来砸场子的了,楼主淡定.
ziyan4444 2012-08-04
  • 打赏
  • 举报
回复
知道也不告诉你
iyomumx 2012-08-02
  • 打赏
  • 举报
回复
异常会沿着调用堆栈向上传播,直到遇到对应的处理程序为止。您是希望异常传播到哪里停止呢?
种草德鲁伊 2012-08-02
  • 打赏
  • 举报
回复
没有这样的机制,你可以参考一下Enterprise Library里的ExceptionHandling模块
lubiaopan 2012-08-02
  • 打赏
  • 举报
回复
我这么用自然有我这么用的道理和原因,我就想知道有没有这种机制。
StarlightHan 2012-08-01
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

引用 5 楼 的回复:

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


同上
[/Quote]
同上
silentcross 2012-08-01
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

既然不想捕获,那就别throw啊……
[/Quote]

同上
iyomumx 2012-08-01
  • 打赏
  • 举报
回复
既然不想捕获,那就别throw啊……
  • 打赏
  • 举报
回复
既然要捕获具体异常,要么分别捕获,要么加判断,即便是捕获所有异常,到时候还得根据类型判断出具体异常
lee3217813 2012-08-01
  • 打赏
  • 举报
回复
来砸场子么
lubiaopan 2012-08-01
  • 打赏
  • 举报
回复
我已经说过了,不想每次都这么判断,你的这个加if语句没什么区别。
我想要的是有一个公共机制,能自动处理。比如catch到TestException之后自动触发一个事件,那个事件去处理这个异常,然后catch里面的就不执行了。
ParanoidKing 2012-08-01
  • 打赏
  • 举报
回复

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

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

17,740

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 .NET Framework
社区管理员
  • .NET Framework社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧