1. Exception 이 발생할 경우 우리는 흔히 Try - Catch 문을 사용하여 Exception을 잡은 후 로그를 찍어본다.
나는 보통 Exception 자체의 Message 와 Exception 내부에 존재하는 InnerException의 Message를 함께 찍었다.
그런데 어느날부터 NullReference가 뜨면서 프로그램이 죽는 것이었다.
이유는 바로 InnerException이 null 인데도 null 체크없이 InnerException.Message 에 접근하려 했던 것이다.
이미 한번 Try-Catch가 진행된 상태에서 Exception 이 또 발생하니 프로그램은 당연히 죽는 것이었다.
InnerException을 사용할 땐 꼭 null 체크를 하자.
2. Caliburn의 EventAggregator 사용할 때
Message를 받는 쪽에서는 eventAggregator.subscribe(this) 를 선언해 주어야 하고,
Message를 주는 쪽에서는 eventAggregator.PublishOnUIThread(message) 를 통해 Message를 날려주어야 한다.
3. 소켓 통신을 할 때 마지막 메시지를 보내고 나서 소켓을 바로 끊어버리면 안된다.
왜냐하면 마지막 메시지를 받는 쪽에서는 메시지 받는 작업을 완료해야 하는데 소켓이 끊겨버리면
Socket Exception이 발생하면서 마지막 메시지를 제대로 못 받기 때문이다.
'Development Experience > C#' 카테고리의 다른 글
C# SynchronizationContext 와 await (0) | 2020.03.19 |
---|---|
WPF TreeView / (Telerik)RadTreeView children 보여주기 (0) | 2020.03.19 |
c# global :: namespace (0) | 2020.03.12 |
WPF 코드 상에서 Event, Command 발생시키기 (0) | 2020.03.04 |
Telerik RadTabbedView 에서 첫 Tab화면이 안나올 때 (0) | 2020.02.06 |