Don’t Just Eat Exception
try ~ catch, Exception 위치
Let the exceptions happen at the lower levels and let them come up through until the top level or as high as you can go
The very top level or at least somewhere in the user interface
try ~ catch는 가능한한 제일 상단에(혹은 사용자 Interface, 사용자에게 어떤 에러인지 알려줘야 하는 경우), Excetion은 가능한한 제일 하단에서 일어나도록 구현.
Lower level에서 try ~ catch 하는 경우
소켓 열고 작업을 하는 도중 Exception 나는 경우 finally에서 무조건 닫아주기
1
2
3
4
5
6
7
8
9
10
11
12
try{
Socket.Open();
Socket.DoSomethingWithSocket();
}
catch(Exception ex){
Log.Information(ex.Message);
Log.Information(ex.StackTrace);
throw; // 상위로 예외 던지기
}
finally{
Socket.Close();
}
상위로 예외 던질 때 주의 해야할 점
1
2
3
4
catch(Exception ex){
throw; // good 👍
throw ex; // bad 👎: less stacktrace.
}
catch Exception에 순서가 있음
Exception이 제일 마지막에 와야함
1
2
3
4
try{}
catch(InvalidOperationException ex){}
catch(ArgumentException ex){}
catch(Exception ex){}