2016-06-08 110 views
-1

我正在Visual Studio中創建一個運行外部程序的應用程序。如何用Visual Basic打開文件?

這個想法進入我的腦海:如果我試圖運行的程序無法訪問,那麼應用程序會做什麼?

運行程序失敗時,如何生成錯誤信息msgbox? (請注意,這是2012年版本的VB)。

Public Class Form1 

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
    System.Threading.Thread.Sleep(1000) 
    Process.Start("C:\Users\{Censored}\Desktop\Bungeecord.bat") 
End Sub 
End Class 
+0

你做了哪些嘗試的文件?這種方式不起作用?給定*當前代碼*,文件不可訪問時的行爲是什麼? – David

+0

那麼,我試過使用「如果」,但它不適合我的代碼 –

+0

「不適合」?就像,文件中沒有*空間*?這看起來像是一個非常任意的限制,並且與手頭的實際技術問題無關。 – David

回答

0

我會使用的try/catch語句

Try 
    [...] 
    Process.Start("C:\Users\{Censored}\Desktop\Bungeecord.bat") 
Catch ex As Exception 
    MsgBox("Can't access file " & vbCrLf & ex.Message) 
End Try 

如果您不容訪問該消息將顯示

+1

這是相當無價值的。如果'Process.Start'方法拋出一個異常,那麼你會捕獲它並顯示一條消息。但是,如果你沒有發現異常,你仍然會收到一條消息,指出發生了異常。所以你不清楚你在這裏解決了什麼問題。此外,捕獲基類'Exception'類總是不好的做法,因爲你會得到你不應該吞嚥的異常。您需要捕獲您實際知道如何處理的派生異常類。在這種情況下,它可能是'FileNotFoundException'或'Win32Exception'。 –

+0

@CodyGray我同意你的觀點,即只捕捉這兩個特定的例外,但我想知道你的意思是什麼*「但是如果你沒有發現異常,你仍然會收到一條消息」*: t認爲崩潰的應用程序,因爲未處理的異常的結果相當於一個方法失敗乾淨,並消息框 – MicroVirus

+0

@CodyGray我已經給出了他的問題的快速解決方案,我知道最好是捕獲正確的異常,但它可以在你正在進行的項目中不必要的依賴,捕捉任何可以輕易改變的異常。 – David