我开发了一个桌面应用程序,几乎完成了,但仍然包含一些我正在消除的错误。
我在应用程序周围使用了一个通用的[尝试…捕获]块
[stathread]
静态void main()
{
尝试
{
程序=新程序();
/…
}
catch(异常X)
{
/…
显示消息框(
消息,
resources.messagebox_error_crash_caption,
messageboxbuttons.ok,确定,
messageboxicon.error);
}
}
< /代码>
我的程序类构造函数是:
公共程序()
{
/ […]
application.enableVisualStyles();
application.setCompatibleTextRenderingDefault(错误);
/ […]
frmlogon=new logon();
应用程序运行(frmlogon);
}
< /代码>
为了确保任何未处理的异常都会一直冒泡到堆栈的最上面,并且至少会用一些通信消息框来响应。
当我在Visual Studio(调试模式)下运行应用程序时,它工作得很好,但是当我部署它并安装在我的PC上时,它就不工作了——这是当错误(顺便说一下,我已经识别)导致它从空数组中读取时我得到的结果。
![](“https://i.stack.imgur.com/ngvtn.jpg”alt=“alt)
为什么?我真的很困惑。为什么它是“未处理”?据我所知,无论是发布模式还是调试模式,Try…Catch都应该有效,否则重点是什么。
我在应用程序周围使用了一个通用的[尝试…捕获]块
[STAThread]
static void Main()
{
try
{
program = new Program();
// ...
}
catch (Exception x)
{
// ...
MessageBox.Show(
message,
Resources.MESSAGEBOX_ERROR_CRASH_Caption,
MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
}
我的程序类构造函数是:
public Program()
{
// [...]
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
// [...]
frmLogon = new Logon();
Application.Run(frmLogon);
}
为了确保任何未处理的异常都会一直冒泡到堆栈的最上面,并且至少会用一些通信消息框来响应。
当我在Visual Studio(调试模式)下运行应用程序时,它工作得很好,但是当我部署它并安装在我的PC上时,它就不工作了——这是当错误(顺便说一下,我已经识别)导致它从空数组中读取时我得到的结果。
![alt text](https://i.stack.imgur.com/NgvTN.jpg)
为什么?我真的很困惑。为什么它是“未处理”?这是我的理解试试…抓住不管它是发布模式还是调试模式,都应该工作,否则重点是什么。