2016-06-08 137 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

相关问题