The Trouble with Checked Exceptions

Tags:

Anders Hejlsberg 의 인터뷰 기사입니다. Anders Hejlsberg은 파스칼과 터보파스칼을 디자인하였고, MS로 옮겨와 WFC, J++, C#을 디자인 했죠. 한마디로 이바닥 슈퍼스타입니다.

인터뷰를 한 사람은 Bruce Eckel 로 Think in JAVA의 저자와 artima.com (사이트 이름 들어보신분 많을 듯) 의 Bill Venners 입니다.

JAVA에서는 Checked Exception이라는 개념이 있는데 이것이 왜 C#에서는 없는가에 대한 많은 초기 논란이 있었는데, 다음 이야기가 명확한 답이 되는군요.

The Trouble with Checked Exceptions

html 파일명이 handcuffs 군요.. ㅋㅋ

어째서 checked exception이 handcuff인가를 세가지로 지적합니다.

  1. Remaining Neutral on Checked Exceptions: XP패러다임의 “Do the simplest thing that could possibly work.” 와 아인슈타인의 “Do the simplest thing possible, but no simpler.” 를 인용하면서 일반적인 문제를 해결하는 상황이 아니면서 프레임워크를 놓을 생각을 하지 말라고 말합니다. (XP에서 내부적으로 사용하는 코드를 인터페이스를 사용해 퍼블리시 하지 말라고 하는 말과 일맥 상통하는 듯 하네요.)
  2. Versioning with Checked Exceptions: 프로그램이 진화하며 예외가 추가되는 것은 인터페이스에 메소드가 추가되는 것과 동일하며, 결국 한 문제를 다른식으로 바꾸었을뿐 checked exception이 문제의 복잡도를 낮추지는 않는다. 예외가 추가되면 클라이언트 app 는 break되버린다. 결국 개발자는 예외를 어떻게 다룰 것인가에 대해서는 관심이 없으며, 예외가 발생해도 프로그램이 안정적으로 돌아가는데 (즉, 예외 발생시 할당한 자원을 release하고 프로그램을 지속 동작시키는데) 관심이 있을 뿐이다. 예외는 central 하게 처리되야하며, 따라서 단 한곳에서만 finally 로 다뤄주면 그 뿐이지 수백개의 catch가 있어야할 이유가 무엇인가.
  3. The Scalability of Checked Exceptions: 확장성 문제는 버젼관리와도 연관된 사항으로서 작은 프로그램에서의 checked exception은 우아해보일지 모르나, 다수의 서브 시스템이 통합될 경우 수십개의 try da,da,da,da, catch curly,curly,culry 와 같은 코드가 발생한다. 결국은 수십개의 throws가 생겨날 수 밖에 없다. 이 때 개발자는 자동적으로 “예외를 나중에 처리하고 지금은 catch clause를 비워둬야겠다”고 생각하게 된다.

결국 서브시스템 통합을 통한 개발시의 문제가 가장 큰 단점이 아닐 수 없네요. 단일 시스템만이라면 우아한 예외의 계층 구조를 생각할 수 있지만 말입니다.

마지막으로 어떠한 예외가 발생가능한가에대해서 사전에 아는 것이 중요하지 않을까라는 물음에 대해서 이렇게 답하니다.

“And so, when you take all of these issues, to me it just seems more thinking is needed before we put some kind of checked exceptions mechanism in place for C#. But that said, there’s certainly tremendous value in knowing what exceptions can get thrown, and having some sort of tool that checks. I don’t think we can construct hard and fast rules down to, it is either a compiler error or not. But I think we can certainly do a lot with analysis tools that detect suspicious code, including uncaught exceptions, and points out those potential holes to you. ”

아.. 이 기사 무지하게 감동스럽군요.. 궁금한걸 다 짚어내서 정말 속이 너무 시원하네요..

artima 자꾸 놀러가야될 듯.. ^^

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *