저는 실시간 스트리밍 데이터를 사용하는 시스템을 구축하고 있으므로 다른 모든 것이 유휴 상태 일 때 발생할 수있는 오류를 처리해야합니다. 사용하고있는 API는 예외가 첨부 된 "오류"라는 메서드를 통해 프로그램에 오류를 다시 전달합니다. 이 방법은 오류를 던질 수 있지만 문제가되는 것은 전체 프로그램을 try-catch 블록에 넣는 것이 좋은 방법인지 모르기 때문입니다.
그래서 주위를 둘러보기 위해 이벤트 처리기를 설정하여 내 프로그램의 주요 부분에서 이벤트를 발생시킨 다음 그 시점에서 발생하는 모든 오류를 처리 할 수 있습니다.
메인 클래스에서 : 예를 들어
private void Error(object sender, EventArgs e) {
Exception ex = sender as Exception;
Console.WriteLine("Error: " + ex); // Or whatever you want to do with the exception
// You could even add this if you want to then use the try -catch sequence (which
// makes the exception easier to parse and also enables you to stop the program
// with unhandled exceptions if it's something catastrophic:
try {
throw ex;
} catch (put.your.exception.detail.here) {
// do stuff
} finally {
// do other stuff
}
}
합니다 (API에서 오류를 수신 클래스에서) :
class Foo {
public event EventHandler ThrowError;
protected virtual void OnError(Object src, EventArgs e) {
if (ThrowError != null) {
ThrowError(src, e);
}
}
private virtual void error(Exception e) {
OnError(e, EventArgs.Empty);
}
}
@Henk Holterman :이 질문은 정말로 나쁘다. 투표 하시겠습니까? 대안을 찾고있는 것이 나쁜가요? – jams
@Henk. 나는 동의한다 ... 스택 오버 플로우에 대해 이론, 전략 또는 성능 질문을 할 수있는 사람에게는 전반적인 문제가있다. 나는 지금 그들이 더 잘 받아 들여지는 곳에서 프로그래머에게 질문하는 경향이있다. – KingOfHypocrites
나는이 투표에서 투표가 완전히 공정하다고 생각하지 않는다. 그것은 물어야하는 완전히 합법적 인 질문입니다. –