我在c#webservice应用程序中遇到问题。异常不再处理某一点。应用程序只需在没有任何进一步的消息/故障异常的情这就是:
问题:
到目前为止我采取的步骤或其他可能有用的信息:
来了! 我的原始代码如下:
try
{
//some code here throws an exception
}
catch (Exception ex)
{
throw new Exception("some message", ex); //after this line no activity anymore
}
当我将其更改为:
Exception myex = null;
try
{
//some code here throws an exception
}
catch (Exception ex)
{
myex = new Exception("some message", ex);
return null;
}
finally
{
if (myex!=null) throw myex;
}
我的问题解决了!?有没有人对这种行为有解释?我希望依赖正常的异常处理机制。
另一句话: 当我在try {}部分之前放置'throw new Exception()'时,我的代码运行正常(但当然,我不希望这样)。
任何人都有任何线索?提前谢谢!
答案 0 :(得分:1)
你是从背景工作者那里运行的吗? 我认为你可能遇到了第一段代码中的线程锁定问题,但是返回null允许线程在你的第二部分代码中完成。
我在这些相同的行中看到了一些错误,其中使用MessageBox.Show()命令将允许代码正常工作。
答案 1 :(得分:0)
此问题可能与平台本身有关。您可以向Microsoft Connect报告,希望您能快速得到答案。
答案 2 :(得分:0)
项目中的任何参考程序集是否偶然32位并在该方法的范围内引用?如果是这样,那么为什么在64中运行会导致未定义的行为将是一个很好的例子。我之前在另一个项目上遇到过这种情况,并且发生了神秘的应用程序崩溃。
答案 3 :(得分:0)
当使用64位机器时,我已经在VS2012中看到类似的行为,通过将平台明确地设置为x64(而不是“任何CPU”)并且还通过禁用(取消选中)来纠正(即,坏行为消失) )任何'启用调试器'。我没有解释为什么这些黑客行之有效。
您可以在菜单:Build-> Configuration Manager ....
中创建一个新的“Active solution platform”可在菜单中找到调试设置:Project-> proj属性。
我有兴趣了解为什么这有效或者其他人已经找到类似的解决方案来解决异常中无法解释的行为问题。