다양한 exes를 열고 SendKeys를 사용하여 작동하는 Windows 응용 프로그램에서 작업합니다. 각 EXE에 try catch를 사용합니다. 모든 예외 메시지는 사용자에게 우편으로 발송됩니다. 이중첩 된 try catch의 모든 예외를 catch하고 문자열에 연결
private void Form1_Load(object sender, EventArgs e)
{
Log("start");
try{
#region "Process1"
try
{
Log("Beginning Process1()");
Process1();
smtp("process 1 success");
Log("Process1() completed");
}
catch(Exception ex)
{
ExceptionLogFile(ex.Message, "Process1()", 27, "Form1.cs");
}
#endregion
#region "Process2"
try
{
Log("Starting Process2");
Process2();
smtp("process 2 success");
Log("Process2 completed");
}
catch (Exception ex)
{
ExceptionLogFile(ex.Message, "Process2", 27, "Form1.cs");
}
#endregion
#region "Process 3"
try
{
Log("Starting Process3");
Process3();
smtp("Process 3 success");
Log("Process3 completed");
}
catch (Exception ex)
{
ExceptionLogFile(ex.Message, "Process3", 61, "Form1.cs");
}
#endregion
}
catch(Exception ex)
{
smtp(ex.Message);
}
}
마지막 catch 블록처럼 뭔가 근본적으로 내가 메일의 수는 트리거되는 줄일 수 있도록 잡은 가능한 모든 예외을 연결합니다.
P. smtp()는 메일을 생성하기 위해 사용하는 메쏘드입니다. 전달되는 매개 변수는 메일
public void Process1()
{
Process p = Process.Start("Process1");
p.WaitForInputIdle();
SetParent(p.MainWindowHandle, this.Handle);
IntPtr h = p.MainWindowHandle;
SendKeys.Send("{TAB}");
SendKeys.SendWait("{Enter}");
}
탭의 몸과
무엇입니까 문제? 각 catch 블록에서'smtp (ex.Message)'를 호출하십시오. –
나는 그가'StringBuilder'를 만들고 각각의'catch' 블록에 예외와 프로세스 이름으로부터 메시지를 추가해야한다고 생각합니다. 마지막에 그는'StringBuilder'의 내용 (있는 경우)을 메일로 보냅니다. 프로세스가 비동기를 실행하는 경우 다른 코드가 필요합니다. – mortb
각 catch 블록에서 예외를 다시 발생시키지 않으면 마지막 catch 블록을 입력하지 않습니다 (smtp() 호출 사용). 그러나 예외를 다시 던지면 하나 이상의 예외가 발생하지 않습니다. –