相关疑难解决方法(0)

VS2010不会在64位版本的Windows上的WinForms应用程序中显示未处理的异常消息

当我创建一个新项目时,我对未处理的异常会有一个奇怪的行为.这就是我可以重现问题的方法:

1)创建一个新的Windows窗体应用程序(C#,. NET Framework 4,VS2010)

2)将以下代码添加到Form1_Load处理程序:

int vara = 5, varb = 0;
int varc = vara / varb;
int vard = 7;
Run Code Online (Sandbox Code Playgroud)

我希望VS中断并在第二行显示未处理的异常消息.但是,会发生的是第三行只是跳过而没有任何消息,应用程序一直在运行.

我现有的C#项目没有这个问题.所以我想我的新项目是用一些奇怪的默认设置创建的.

有没有人知道我的项目有什么问题?

我试过检查Debug-> Exceptions中的方框.但即使我在try-catch块中处理异常,执行也会中断; 这也不是我想要的.如果我没记错的话,在这个对话框中有一个名为"未处理的异常"的列或者类似的东西,这会让我感到非常兴奋.但在我的项目中只有一列("Thrown").

c# exception-handling visual-studio-2010

76
推荐指数
2
解决办法
2万
查看次数

从一个字符串中解析一个数字,其中包含非数字

我正在研究.NET项目,我试图只解析字符串中的数值.例如,

string s = "12ACD";
int t = someparefun(s); 
print(t) //t should be 12
Run Code Online (Sandbox Code Playgroud)

有几个假设

  1. 字符串模式始终是数字后跟字符.
  2. 数字部分始终为一位或两位数值.

是否有任何C#预定义函数来解析字符串中的数值?

c#

12
推荐指数
2
解决办法
2万
查看次数

为什么不调用null事件处理程序引发异常?

阅读此问题后,似乎以下代码应该失败:

private void Form1_Load(object sender, EventArgs e)
{
   EventHandler myHandler = null;
   myHandler(this, null);
}
Run Code Online (Sandbox Code Playgroud)

但是当我运行它时,它运行得很好(并且什么都不做).该代码的行为与以下内容有何不同?

private void Form1_Load(object sender, EventArgs e)
{
   EventHandler myHandler = null;
   EventHandler myCopy = myHandler;
   if (myCopy != null)
   {
      myHandler(this, null);
   }
}
Run Code Online (Sandbox Code Playgroud)

编辑:根据Lasse V. Karlsen的回答,以这种方式捕捉异常是有效的:

private void Form1_Load(object sender, EventArgs e)
{
   try
   {
      EventHandler myHandler = null;
      myHandler(this, null);
   }
   catch (Exception ex)
   {
      this.Text = "Exception!";
   }
}
Run Code Online (Sandbox Code Playgroud)

c# event-handling thread-safety

4
推荐指数
1
解决办法
191
查看次数

VS2008调试器不会在未处理的异常中断

我的vs调试器有一个奇怪的问题.在vs调试器下运行我的程序时,调试器不会中断未处理的异常.而是将控制权返回给VS,就像程序正常退出一样.如果我查看输出选项卡,就会在线程终止之前列出第一次机会执行.

我了解如何使用"调试"菜单中的"例外"框.我检查了未处理的异常.如果我检查正在发生的特定执行的第一次机会异常,调试器将停止.

但是,我的理解是,调试器也应该停止任何"Unhandled-Exceptions".它不是为我这样做的.

以下是"输出"选项卡的最后几行:

A first chance exception of type 'System.ArgumentOutOfRangeException' occurred in mscorlib.dll
The thread 0x60c has exited with code 0 (0x0).
The program '[3588] ALMSSecurityManager.vshost.exe: Managed' has exited with code -532459699 (0xe0434f4d).
Run Code Online (Sandbox Code Playgroud)

我不明白为什么异常会在未处理时被标记为"第一次机会"异常.

我相信0xe0434f4d退出代码是一个通用的COM错误.

有任何想法吗?

地铁.

debugging unhandled visual-studio-2008

2
推荐指数
2
解决办法
7538
查看次数