Task가 아닌 Thread를 사용해야 했기 때문에 나온 문제.
Task는 예외 전달에 문제가 없지만 다른 스레드에서 주스레드로는 Exceptinon propagation이 일어나지 않음.
자세한 스터디는 further task 로..
Thread thread = new Thread(() => { method(); });
thread.SetApartmentState(ApartmentState.STA);
thread.Start();
thread.Join();
코드와 같이 Thread에서 method 함수를 실행시켜 주었고, method의 예외처리 catch에서는 throw Exception을 해주었던 상황.
Thread를 생성해주었던 주스레드 함수에 저 Thread 생성, join 구문도 try괄호에 쌓여져 있었기 때문에 문제가 될것이 없었으나 method() 함수에 throw Exception; 에서 계속 에러 발생.
구글링 후 가장 쉬운 해결 방법 도출
1. 전역 Exception 객체 생성
2. method() catch에서 전역 Exception에 값 넣어줌
3. thread.Join() 구문 뒤에 Exception null 체크 해서, Exception이 발생했다는것 catch 후 로직 전개
※주의 Exception변수는 재처리시 null 일 수 있도록 method 함수 실행전 null로 만들어 줄것.
'C#' 카테고리의 다른 글
[error 처리] The JSON value could not be converted to... (0) | 2020.10.19 |
---|