首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

如果程序崩溃了,系统会发送一个消息给他吗?如果有是多少?该怎么处理

2012-02-28 
如果程序崩溃了,系统会发送一个消息给他吗?如果有是多少?如题。[解决办法]系统运行程序,并不知道程序的运行

如果程序崩溃了,系统会发送一个消息给他吗?如果有是多少?
如题。

[解决办法]
系统运行程序,并不知道程序的运行状态。
程序崩溃,对于系统来说,跟正常结束是一样的。
只是我们应该根据程序退出的返回值,判断出了什么问题
[解决办法]
这要看怎样理解崩溃的意思了,对一个普通的应用程序来说,因为某种原因而导致程序无法执行下去,如除数零,这种错误系统是可以捕获的,并可以给你一个通知,由你来处理,如VB6的On error,当然,如果你不处理的话,你的应用程序显然就只能是崩溃了。
这种崩溃只是你的程序设计上的问题,系统可以捕获你的错误,当然可以给你发消息,但要说明的是,系统不可能判断一个应用程序是崩溃了还是正常退出了,只能由你自己判断,就像上面的例子一样,系统给了你一个错误消息,你可以选择处理他,也可以选择不处理他,无论你做怎样的选择,对系统来说,你的程序都是正常退出的。
另一种崩溃是遇到了不可预知的错误,如你正在向屏幕输出数据,而你此时却把显卡拔了,这种情况系统也无法处理,当然也就不可能给你什么消息(可以支持热插拔的除外)
总的来说,崩溃可以理解为三个层面的,一是应用程序层,二是操作系统层,三是硬件层,下层的可以捕获上层的错误,可以给上层发错误消息,但处不处理是上层的事,所以是否崩溃只能是由处理的层来判断,下层是无法判断的
[解决办法]

探讨
那么如果是不正常退出,返回的消息是什么?

[解决办法]
程序退出的返回值,这对其它程序来说基本没有什么意义,程序的返回值是由程序自定义的,这一点对C程序特别明显(如果LZ学过C也许就不会有此一问了,VB还真不知道怎样让应用程序返回一个值,你可以再开贴问问牛人们),以前用C写的exe来做系统的启动菜单(在DOS时代),在C的main函数中可以用return 返回一个值(当然值的意义是什么,由写程序的人来决定,如他可以用1代表正常退出,也可以用2或其它数代表),在Dos环境中可以用ERRORLEVEL来捕获到(现在你可以在控制台环境中测试),这是以前Dos启动菜单的一种可能写法
test.exe
rem test.exe 返回1、2、3
if ERRORLEVEL 3 boot1.bat
rem 是3执行boot1
if ERRORLEVEL 2 boot2.bat
rem 是2执行boot2
if ERRORLEVEL 1 toot3.bat
rem 是1执行boot3

总之,只有程序设计者才知道返回值的意义,他的应用程序返回值对其它人来说基本没什么意义,当然操作系统也不会去试图理解一个应用程序的返回值

热点排行