장시간 구동되는 프로그램의 경우 예외처리를 무조건 해주자.
몇일전부터 자꾸 프로그램이 죽는 현상이 발생했는데
디버깅해보니 해당부분에서만 예외처리를 안해줬었다.
크러시날경우 .mdmp 파일을 무조건 분석해보자.
그렇다고 모든 코드를 try~catch 문에 넣진 말자. (속도 저하, 아래 참고)
[참고]
try-catch와 if는 서로 동일한 용도로 사용할 수 있는게 아니다.
try-catch의 경우 개발자가 예상치 못한 프로그램 흐름이 발생할 경우, 사용해야하며 개발자가 예상할 수 있는 것은 if로 처리하는 것이 바른 프로그래밍 테크닉
단순히 변수가 null인지 확인을 하는데 try-catch를 사용하지 말고 if를 사용하는 것이 옳다.
try-catch는 파일 시스템 full과 같은 비정상적인 프로그램 흐름에 대응하는데 사용해야함
이유
1. Java 6 이하 버전에서는 try-catch 내부에 있는 로직을 JIT 컴파일러가 자동으로 최적화하지 않는다.
2. try-catch 블록을 사용하는 것이 if문을 사용하는것보다 오버헤드가 더 크다.
- try 문법 만으로는 런타임시에 오버헤드가 발생하지는 않지만, 만약 예외가 발생했을 경우 catch구문에서 특정 작업을 수행해야하므로 이때 오버헤드가 발생한다.
자바 JIT 컴파일러 -> 자바 소스코드를 바이트코드로 바꾸는 컴파일러와는 다른 것임, JVM에서 바이트코드를 CPU의 native instruction set(머신 코드)으로 바꾸는 역할 + 최적화를 수행
자바 바이트코드를 단순히 JVM에서 JIT 컴파일러 없이 동작시키면 해당 CPU에 맞는 instruction code를 바로 사용하는게 아니기 때문에 속도가 느리다. -> 이 점을 보완하기 위해서 사용
Just in Time이라는 것은 필요할때 바이트코드를 머신코드로 바꾸어서 사용한다는 것... 일단 머신코드로 바꾸고 나면 해당 로직의 속도는 빨라진다.
- 출처 : http://datar.tistory.com/93
'Coding > Etc' 카테고리의 다른 글
클릭시 웹브라우저 열기 (4) | 2015.11.10 |
---|---|
notifyIcon 을 이용하여 알림메시지 설정 및 메시지클릭 시 이벤트발생시키기 (0) | 2015.11.10 |
C# 좋다 (2) | 2015.11.10 |
Thread 인자넘겨주기 (0) | 2015.11.09 |
디시인사이드 자동댓글소스 (0) | 2015.11.08 |