Java 의 Exception 처리는 C++에서 도입되었지만 checked exception은 Java만의 독특한 특징입니다. 아시다시비, 컴파일러가 exception을 꼭 처리해라고 강요하는 것이죠. 이것은 java 이후에 설계된 언어인 C#이나 루비에도 채택되지 않았습니다. 즉 Java 이외의 다른 언어들의 Exception 처리 방식은 Java의 unchecked exception과 동일한 방식입니다.
Java의 초기에 checked Exception의 사용을 권장하던 것에 대해서 지금은 많은 반론이 제기되고 있습니다. 극단적으로 Java언어의 Checked Exception 도입 자체가 실패라고 주장하는 사람도 많습니다. Thinking in Java의 저자인 Bruce Eckel도 그 중 한 사람입니다. Spring framework의 아버지 Rod Johnson도 Checked Exception이 쓰여야 할 때도 있지만 그 것이 과도하게 선호되어 온 것은 지적하고 있습니다.
어쨓든 Exception 부분은 Java로 API 설계와 코딩를 할 때 가장 어려운 부분이라고 느껴집니다. Java 아키텍트와 개발팀의 실력을 측정하는 좋은 방법은 그들이 만든 Exception 처리 코드를 보라는 말까지 있으니까요.
Effective Java 중 Chapter 8 (Item 39~47)
Expert One-on-One J2EE Design and Development 중 Chapter 4 Design Techniques and Coding Standards for J2EE Projects, Exception Handling 부분
Barry Ruzek의 EFFECTIVE JAVA EXCEPTIONS
Jim Cushing Three Rules for Effective Exception Handling
13 Exceptional Exception Handling Techniques
Gunjan Doshi의 Best Practices for Exception Handling
Rob Walling의 Exception Handling에 관한 글 The Two Fundamental, No Frills, Square One Rules of Exception Handling
Alan Griffiths의 Exceptional Java
An Exception Handling Framework for J2EE Applications
Brian Goetz의 글: Java theory and practice: The exceptions debate
Bruce Eckel, Rod Johnson, Joshua Bloch등의 주장을 정리해 놓은 글입니다. Checked Exception이 상세한 구현을 부적절하게 노출함, 불안정한 메소드 시그너처,읽기힘든 코드,Exception 삼키기,너무 많은 Exception wrapping의 문제점 있는 것을 나열하고 있습니다. unchecked exception은 Documentation이 더욱 중요하다고 강조하고 있습니다.
Rod Waldhoff의 글 : Java's checked exceptions were a mistake
Bruce Eckel의 견해(Thinking in Java의 저자): Does Java need Checked Exceptions?
Bill Venners(C#의 아키텍트)와 Bruce Eckel의 인터뷰 : The Trouble with Checked Exceptions
아직 못 읽어본 자료들...
Exception-Handling Antipatterns
http://today.java.net/pub/a/today/2006/04/06/exception-handling-antipatterns.html
Error handling, A Pattern Language
http://www.objectarchitects.de/arcus/cookbook/exhandling/index.htm
http://www-106.ibm.com/developerworks/java/library/j-ejbexcept.html
http://www.javaworld.com/jw-07-1998/jw-07-techniques.html
http://www.javaworld.com/jw-07-1998/jw-07-exceptions.html
http://www.javaworld.com/javaworld/jw-08-2001/jw-0803-exceptions.html
http://www.javaworld.com/javaworld/jw-09-2001/jw-0914-exceptions.html
http://www.javaworld.com/javaworld/jw-10-2003/jw-1003-generics.html
http://www.codemonkeyism.com/archives/2008/12/16/7-good-rules-to-log-exceptions/