2011-10-14 2 views
0

예외를 throw하는 .exe를 시작하는 프로세스가 있습니다. 프로세스가 예외를 잡을 수있는 방법이 있습니까?캐칭 예외 처리

지금까지이 시도했습니다

Assembly assembly = Assembly.LoadFrom("ConsoleApplication1.exe"); 
Type[] types = assembly.GetTypes(); 
foreach (Type t in types) 
{ 
    MethodInfo method = t.GetMethod("Main", 
     BindingFlags.Static | BindingFlags.NonPublic); 
    if (method != null) 
    { 
     try 
     { 
      method.Invoke(null, null); 
     } 
     catch (Exception ex) 
     { 
      Console.WriteLine(ex.Message); 
     } 
     break; 
    } 
} 

하지만 나는 한 .exe를 찾을 수 없다는, 첫 번째 줄에 예외가.

Process myProcess = new Process(); 

myProcess.StartInfo.UseShellExecute = false; 
myProcess.StartInfo.FileName = "C:\\Users\\John\\Documents\\Visual Studio 2010\\Projects\\ConsoleApplication1\\ConsoleApplication1\\bin\\Debug\\ConsoleApplication1.EXE"; 
myProcess.StartInfo.CreateNoWindow = true; 
myProcess.Start(); 

하지만 디버깅 할 때,이 예외 아니며, 해당 ConsoleApplication1.exe가 표시되지 않습니다 : 나는 또한이 시도했습니다.

+1

실제로 첫 번째 코드 블록 (리플렉션을 통해 메소드 호출)과 두 번째 코드 블록 (프로세스 시작) 사이의 연결은 보이지 않지만 두 번째 예제에서이 전체 경로를 사용하지 않는 이유는 무엇입니까? 첫 번째 예가 무엇이 발생했는지 살펴 보겠습니다. – Groo

+0

파일 대포가 발견되면 디렉토리 경로가 잘못되었다고 들었을 때. 작업 디렉토리를 설정하십시오. –

답변

0

당신은 당신의 코드의 첫 번째 줄에 시도/캐치를 사용하고 캐치를 처리 수를 반환해야

link

System.IO.Path.GetFullPath("ConsoleApplication1.exe").

try { Assembly assembly = Assembly.LoadFrom("ConsoleApplication1.exe"); } 
catch { throw; } 

그리고 그렇지 않으면 당신은 항상이 시도 할 수 :이 도움이

myProcess.StartInfo.FileName = @"C:\Where\Your\File\Is.exe"; 

희망을.

1

이 시도 : 전체 경로