在VB和VB.NET程序中判斷當前是否運行於開發環境中

有時我們需要判斷正在運行的程序是處於開發環境下(調試模式),還是正常運行狀態(已編譯後).以前看到個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的異常.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章