请教Exception在debug模式下和直接运行时候行为不一致的问题

Roaming_Sheep 2005-08-15 10:21:09
我在c#程序的主入口点里面写如下代码
try
{
dosomething();
}
catch(Exception ex)
{
logException(ex);
}

因为dosomething调用了几个类库,而这些类库可能抛出类库中未处理的Exception。

按我的理解,这些类库中抛出的Exception应该到达主入口点的catch块、并且进行相应处理。
以debug模式启动运行时,情况确实如此。

但如果不调试直接执行(debug版本程序),则上述的Exception抛出时,程序弹出对话框,说程序中出现unhandled exception(带有details、continue、quit按钮的那个),这个Exception不会被主入口点的catch块捕获到。

程序行为超出了我的预想,不知道该如何解决。
...全文
233 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Roaming_Sheep 2005-08-30
  • 打赏
  • 举报
回复
问题已经解决了,是线程异常的问题,分散了
timiil 2005-08-27
  • 打赏
  • 举报
回复
up
cuike519 2005-08-26
  • 打赏
  • 举报
回复
不会!应该是你的logException出现了异常。请将logException替换成MessageBox.Show(ex.Message)查看是否还出现上述的问题!
quickball 2005-08-17
  • 打赏
  • 举报
回复
只能作出这样的推测,logException方法抛出了异常
uoyevoli 2005-08-17
  • 打赏
  • 举报
回复
挺奇怪,帮你。。。
Tony_lau111082 2005-08-15
  • 打赏
  • 举报
回复
不知道你的具体代码

不过异常的抛出应该是一级一级的向上哈
Roaming_Sheep 2005-08-15
  • 打赏
  • 举报
回复
Roaming_Sheep 2005-08-15
  • 打赏
  • 举报
回复
代码基本就是这样:

using aLib;
main ()
{
try
{
dosomething();
}
catch(Exception ex)
{
logException(ex);
}
}

void dosomething()
{
aClass a = new aClass;
while(condition)
{
a.dosth();
foo();
}
}

______________________________

aLib.dll :

Class aClass
{
public void dosth()
{
throw new Exception();
}
}

程序编译为debug版本
在debug模式下运行,则dosth中抛出的异常传递到了main中的catch块
而直接运行,则在dosth抛出异常时,程序弹出上述的对话框,而不是被main中的catch块捕获。

17,741

社区成员

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

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