代码如下: System.Windows.Forms.DialogResult result;
try
{
result = frm.ShowDialog(this);
}
catch (Exception ex)
{
string x = ex.message
}如果frm中发生错误,Debug版可以捕捉到错误。但是Release版却会发生系统级错误,也就是非法操作。为什么?是否是因为Release版本编译时进行了代码优化?有没有解决的方法呢?
谢谢大家了!
try
{
result = frm.ShowDialog(this);
}
catch (Exception ex)
{
string x = ex.message
}如果frm中发生错误,Debug版可以捕捉到错误。但是Release版却会发生系统级错误,也就是非法操作。为什么?是否是因为Release版本编译时进行了代码优化?有没有解决的方法呢?
谢谢大家了!
解决方案 »
- listview绑定imagelist导致vs项目未响应
- C# 编写自己webserver如何支持CGI
- 有关c#数据库编程的问题(很简单)
- 80端口冲突??
- 请问在C#中能否调用“Microsoft.VisualBasic”命名空间下的函数?
- winform中添加Flash控件在Win7下程序运行不了
- 复合控件获取焦点失去焦点问题
- 如何打开存成rtf格式的文本文件
- 请问一下:C++和c#具体有什么区别呢?
- 求c#中执行SQL语句的完整例子
- 如何复制Excel的内容到Datagrid(Winform)里面去?
- UP有分。沈阳.net也没有聚乐部,http://groups.google.com/group/synet我建了这个,有看到的,进去说两句吧。
建议,调试用deBug 模式,无错后,生成程序用Release 模式。
一般通过Debug等来消除错误,通过调试后,再Release
1、release 没有 debug information & symbols,比如每段code对应的源文件名和行号。
2、release 不包含 MFC 的诊断代码,如 Assert, Dump 以及相关的宏都不会被编译。
3、relesse 被大幅度优化,(debug 生成的二进制代码严格的符合源代码),比如:
for(int i = 0; i < 16; i++)
string[i] = '\0';
编译成:
__asm {
xor eax,eax
mov dword ptr [string],eax
mov dword ptr [string+4],eax
mov dword ptr [string+8],eax
mov dword ptr [string+12],eax
}
http://www.7622.com/list/44469.htm
但是在上面的代码中,两种版本的表现却完全不同。try-catch在release版本中完全无效了!