2015-05-13 4 views
0

Я пытаюсь сделать логин, используя osql. Я знаю, что во время работы с cmd исключение отменяется Но в следующем коде я не поймаю исключения. Как я могу поймать исключение?Catch osql exception

p.StartInfo.FileName = "osql.exe"; 
p.StartInfo.Arguments = "-S serverName -U userName -P \"psw\" -d db"; 
p.StartInfo.UseShellExecute = false; 
p.StartInfo.RedirectStandardOutput = true; 
try 
{ 
    p.Start(); 
    // should not get here 
} 
catch(Exception ex) 
{ 
    // should get here 
} 
+0

Если возникло исключение, оно ПРИХОДИТ в часы сбора. Btw, Просто создайте объект там, как 'Exception ex'. –

+0

@HarveySpecter - он не делает. – Yakov

ответ

1

В System.Diagnostic.Process «р» не возбудит исключение, если не удается Войти на Osql.exe. Может быть, результат Osql.exe возвратит код win32-заблуждается ... Вы не можете справиться с loginexception от другого процесса в приложении с помощью попытаться поймать блок

EDIT:

Вы можете получать ExitCode by P.ExitCode. Предположим дождаться завершения процесса osql.exe с помощью метода WaitForExit().

p.Start();    
    p.WaitForExit(); //Wait for the Application to exit 
    if (p.ExitCode <> 0) //If <>0 the operation failed 
    { ///Operation failed 
    } 

На моей машине результат всегда был 0 или 1 - я не думаю, что вы получите точный код ошибки для loginerror. Просто неудачная или успешная информация.

+0

Хорошо. Как я могу узнать, что сбой входа и какая ошибка? – Yakov

+0

взгляните на мои правки – Cadburry