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

음, "If"를 사용하려고했지만 코드에 맞지 않습니다. –

+0

"적합하지 않습니다"? 마찬가지로 파일에 * 공간이 없습니다. 이는 매우 독단적 인 제한 사항처럼 보이며 실제 기술적 인 문제와는 아무런 관련이 없습니다. – David

답변

0

내가 사용하는 것이 시도/캐치 문장

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' 클래스의 기본 클래스를 잡는 것은 나쁜 습관입니다. 왜냐하면 여러분은 삼키지 않아야하는 예외를 얻을 것이기 때문입니다. 처리 방법을 실제로 알고있는 파생 예외 클래스를 catch해야합니다. 이 경우'FileNotFoundException' 또는'Win32Exception'이됩니다. –

+0

@CodyGray 나는이 두 가지 예외를 잡는 것에 대한 당신의 요점에 동의하지만, 나는 당신이 예외를 발견하지 못했다면, 당신은 여전히 ​​당신이 "* : t는 처리되지 않은 예외의 결과로 응용 프로그램을 손상시키는 것이 하나의 메서드가 정상적으로 작동하지 않는 것과 같고 메시지 상자라고 생각합니다. – MicroVirus

+0

@CodyGray 자신의 문제에 대한 신속한 해결 방법을 제공했지만 올바른 예외를 잡는 것이 더 낫습니다. 당신이 작업하고있는 프로젝트에서 불필요한 지연을 피하고 쉽게 변경 될 수있는 예외를 포착하십시오. – David

관련 문제