안녕하세요. 저는 이전에 예외 처리를 해본 적이 거의 없었습니다. Java 단에 모든 method에 throws Exception을 달아 주면 프로그램이 정상 동작 했기 때문입니다. 하지만 모든 예외를 Controller에 던져 줬는데, Controller에서 조차 예외 처리를 하지 않고 메소드에 throws Exception을 붙인다면 해당 프로그램은 예외 처리가 되지 않은 프로그램이라는 사실을 알게 됐습니다. 즉, 예외가 발생하지 않았을 경우에는 프로그램이 정상 동작 하지만, 예외가 발생하면 프로그램 동작이 멈추는 것은 물론이고, 사용자에게 불필요한 에러 메세지 및 정보를 표출하게 되는 문제가 생깁니다. 이와 같은 문제가 발생하지 않도록 Controller에서 try catch를 이용한 예외 처리를 해주려고 하니 몇 가지 궁금증이 생겨서 글을 작성하게 됐습니다.
1. 모든 예외 상황을 파악해서 처리해줘야 하는가 ?
먼저 예외 처리의 수준이 궁금합니다. 프로그래머가 짠 코드에서 발생할 수 있는 모든 예외에 대해서 파악한 후 해당 예외에 대한 모든 처리를 전부 해주는 것이 맞는지 궁금합니다. 이렇게 해야 한다면 프로그래머의 실력에 따라서 생각할 수 있는 예외의 숫자가 다를 것 같습니다. 또 간단한 코드에서 발생할 수 있는 예외가 생각 보다 많을 수도 있다는 생각이 듭니다. 보통 발생할 수 있는 모든 경우의 예외에 대해 처리해 주는 것이 맞는 건가요?
2. 구체적 예외 처리가 필요한 경우가 있는가 ?
예를 들어, catch(Exception e) 또는 catch(RuntimeException e) 이런 식으로 예외 처리를 한다면 세세하게 여러 개의 예외 처리를 할 필요가 없는데, 구체적 예외 처리를 써야 하는 상황이 있을까요? 또는 구체적으로 예외를 다뤘을 때 장점이 있을까요?
3. 코드가 길 경우 어느 부분을 try 안에 넣어줘야 하는가 ?
controller의 메서드가 간단하게 update문, 결과를 model에 담아주는 코드, 리턴하는 코드 세 줄이 전부라면 try문 안에 update 문을 넣어주면 된다는 것을 쉽게 파악할 수 있습니다. 하지만 코드가 100줄인 경우를 생각해 보겠습니다. 중간 중간 변수를 선언하고, 로직 및 분기가 실행되고, update, select 등의 문장들이 섞여 있습니다. 즉, 메소드의 중간 중간에 예외가 발생할 수 있는 코드들이 포함 돼 있는 상황입니다. 이럴 경우에 try 안에 어떤 코드를 넣어야 할까요? 제 생각에는 발생할 수 있는 코드마다 try, catch를 작성하기 보다는 해당 메소드 안에 전체 코드를 try 안에 넣어주는 게 맞는 것 같은데, 뭔가 꺼림직 합니다. 이와 같은 경우 어떻게 하는 게 맞는지 궁금합니다.
4. 선배님들은 보통 어떤 식으로 예외 처리를 하시는 지 궁금합니다.
실무에서 보통 예외 처리는 어떻게 이루어지는 지 궁금합니다. 뭔가 깔끔한 방법이 있을 것 같은데.. 모호한 질문이지만 예외 처리에 대한 개념을 잡는데 도움이 될까 하여 질문 드립니다.
감사합니다. 점심 맛있게 드시고 좋은 하루 되세요.