当我创建一个新项目时,我对未处理的异常会有一个奇怪的行为.这就是我可以重现问题的方法:
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#编写的程序,在Windows CE设备上运行(在Compact Framework上).它处理最少的用户操作(按钮点击),使用串行端口和TCP/IP通信.
问题是有时软件会自行关闭.在后台,应用程序(或应用程序的某些部分)似乎仍在运行(至少在一个记录的情况下),因为它使用串行端口,因此重新启动应用程序没有帮助.我不能重现这个问题,因为它发生在大多数情况下,当没有用户交互,没有串口通信和网络通信都是"我还活着"的消息时,软件看似没有理由崩溃.(我尝试在调试模式下实现它,至少知道代码中的问题在哪里,如果它是一个软件错误,但到目前为止我没有运气.)
由于我的想法不足,问题是:什么错误或异常或操作系统操作或硬件故障会导致这样的行为?
在同一类型的不同设备上已经出现了这个问题,因此它不应该是硬件错误.(或者我的所有硬件都有相同的错误.)处理异常,因此它不应该是一个例外.处理未处理的异常也是如此,因此它也不应该是未处理的异常.(我的猜测是它是由a引起的,StackoverflowException因为我不知道任何其他无法捕获的异常,但代码中没有递归,至少不是自愿的,所以它不应该是可能的.)