본문 바로가기
개발 노트/기초 지식

[java] if else 와 try-catch 의 차이

by tokkiC 2022. 5. 9.

코드를 짜다보면 예외가 발생하게 된다

예를들어 a 를 b로 나눈다고 하자

그냥 a / b 로 코드를 만들면 에러는 뜨지 않지만 값을 입력하다보면 에러가 뜨는 경우가 있다

나누는 b의 값에 0 이 들어가면 그러하다 0 으로 나누지는 못하니까 수학적인 문제가 발생하는것이다

이럴때 해결하는 방법은 뭐가 맞을까?

if else 를 써서 b가 0 일 경우의 대안을 제시하는 것

try-catch 를 써서 예외가 발생하면 처리하는 법

두 가지가 방법일 것이다 그러면 둘 중에 뭘써야 할까? 고민을 참 많이 했다 내 결론은 이렇다

예외의 경우의 수를 모두 예측 가능하고 코드를 설계할수있을 경우엔 if else를

예외의 모든 경우의 수를 쉽게 예측하기 힘든 경우 try-catch 를 사용하는게 맞다고 본다

누군가는 if else 는 분기처리고, try-catch 는 예외처리라는데

결국 분기와 예외는 둘 다 개발자가 처리해야 될 장애물이 아닌가? 막연하다

그러니 회사를 예로 들어서 생각해보자

말단 사원이 일을 하면서 문제가 발생했다. 문제를 어떻게 처리해야 할까?

1. 문제의 해결방법이 메뉴얼에 있으니 메뉴얼에 적힌대로 행동한다 if else
2. 문제에 맞는 해결방안을 찾고 생각해본다. 내 권한이 아니면 상사에게 보고한다 try-catch / throws

 

1과 2의 차이는 메뉴얼에 있냐 없냐다. 메뉴얼에 없으니 생각을 하고 대처하던 보고를 하던 하는것이다

메뉴얼에 있으면 그냥 메뉴얼대로 해도 내 권한이고 정해진 답이니 아무도 뭐라 안하니까!

이럴땐 이렇게 해야된다는 모두가 납득가능하고 네 권한으로 해결 가능한 대처법이 있다면 그렇게 해라

메뉴얼이란 말이 딱 어울린다. 메뉴얼을 주는 이유는 하나하나 다 묻지 말고 이 정답을 보고 이렇게 하렴 이니까!

왜? 메뉴얼이란 건 회사에서 이건 이렇게 해야지 하고 "처리 방법이 정해져있는 정답"이니까!

메뉴얼대로 하면 따로 직접 생각하거나 상사에게 보고하는 것보다 업무를 빠르고 효율적이게 할 수 있다

실제로 if else 가 try-catch 코드의 처리 속도가 월등히 빠르다고 한다

하지만 메뉴얼은 특정 경우에 이렇게 해라하기에 업무처리에 유동적이지 않고 처리할수있는 대상에 한계가 있다

메뉴얼에 올라와 있지 않은 문제면 우리는 직접 try-catch로 예외를 해결하던가 상사에게 묻고 해결 throws 해야 한다

try-catch 를 사용하면 좀더 예외를 유동적으로 처리 가능하고 throws 를 사용할 수 있다는 점도 큰 장점이다.

내 상황에 맞게 골라서 사용하도록 하자

댓글