在VB和VB.NET程序中判断当前是否运行于开发环境中
2009-02-20 01:29
921 查看
有时我们需要判断正在运行的程序是处于开发环境下(调试模式),还是正常运行状态(已编译后).以前看到个VB6的判断方式:
Public Function IsDebugMode() As Boolean
IsDebugMode = False
On Error Resume Next
Debug.Print 1 / 0
If Err.Number <> 0 Then
IsDebugMode = True
End If
End Function
这段代码的原理就在于:在编译之后的应用程序运行时会直接忽略Debug.Print这一语句.也就是说,若不产生错误,说明这个语句根本没有执行,因而是在编译后的实际环境中;而如果产生了错误,则说明这个语句正常地执行了,说明是在开发环境中.
如今这个方法用在VB2005中不行了.因为在.NET 2005中,1/0并不会产生错误,而是得到一个输出结果:无穷大.这样的话,在VB2005中必须让Debug去Print一个会产生异常的表达式.可以改进如下:
Public Function IsDebugMode() As Boolean
Dim o As Object = Nothing
Try
Debug.Print(o.Name)
Return False
Catch ex As Exception
Return True
End Try
End Function
在这段代码中,定义了一个对象变量,并赋值为空,因此,o.Name会产生一个System.NullReferenceException的异常.
Public Function IsDebugMode() As Boolean
IsDebugMode = False
On Error Resume Next
Debug.Print 1 / 0
If Err.Number <> 0 Then
IsDebugMode = True
End If
End Function
这段代码的原理就在于:在编译之后的应用程序运行时会直接忽略Debug.Print这一语句.也就是说,若不产生错误,说明这个语句根本没有执行,因而是在编译后的实际环境中;而如果产生了错误,则说明这个语句正常地执行了,说明是在开发环境中.
如今这个方法用在VB2005中不行了.因为在.NET 2005中,1/0并不会产生错误,而是得到一个输出结果:无穷大.这样的话,在VB2005中必须让Debug去Print一个会产生异常的表达式.可以改进如下:
Public Function IsDebugMode() As Boolean
Dim o As Object = Nothing
Try
Debug.Print(o.Name)
Return False
Catch ex As Exception
Return True
End Try
End Function
在这段代码中,定义了一个对象变量,并赋值为空,因此,o.Name会产生一个System.NullReferenceException的异常.
相关文章推荐
- 在VB和VB.NET程序中判断当前是否运行于开发环境中
- 判断当前进程是否以管理员程序运行的方法
- NSIS打包,判断当前程序是否在运行
- Android 判断当前程序是否在前台运行
- 判断当前程序是否正在运行
- C#:判断当前程序是否通过管理员运行
- .NET程序中的开发和运行基本环境是什么?
- 判断当前程序是在调试环境下运行?
- C#:判断当前程序是否通过管理员运行
- C#判断当前运行环境是否64bit
- 如何判断当前程序是否运行在虚拟机内
- C#.NET Form设置/取消开机自动运行,判断程序是否已经设置成开机自动启动(转载)
- VB程序怎么判断另一个程序是否正在运行?
- android 判断是否在桌面,当前程序是否在运行
- Android 判断当前程序是否在前台运行
- C#判断当前程序是否通过管理员运行的方法
- android 判断当前程序是否在前台运行
- Android 判断程序是否位于前台,检查当前运行的程序
- iphone开发中用NSUserDefaults 判断程序是否第一次运行
- 判断程序的运行环境是否是64位系统