코드를 짜고 실행하는 과정에서 여러 문제들이 발생할 수 있고,
예상되는 문제들을 정교하게 정의 해둘수록 대응하기 좋다.
그래서 필요한 것이 예외 처리, exception handling 이다.
발생하는 대부분의 예외들은 이미 예외 처리 방법이 정리 되어 있다. 따라서 이미 있는 예외 클래스를 활용해서 예외 처리를 하면 된다.
예외 클래스로 정리되어 있지 않은 예외라고 해도, 직접 해당 예외를 정의하여 사용하면 된다.
오늘은 이미 구현체가 있는 예외를 처리하는 방법에 대해 먼저 정리해보겠다.
try 문에 예외가 발생할 가능성이 있는 코드를 적고
catch 블럭 내에는 예외가 발생했을 때 구현되어야 하는 코드를 적는다.
전체 구조는 아래와 같다.
try {
} catch (Exception1 e1) {
} catch (Exception2 e2) {
}
숫자 2개와 연산자 1개를 받아 사칙연산을 수행하는 계산기를 만드는 과제를 진행하고 있는데, try ~ catch 를 사용하여 예외처리를 해보았다.

if 에서 적합하지 않은 연산자가 확인되면, 예외를 발생 시켜서 throw 하고, 아래 catch 문들 중 해당 예외 조건에 맞는 catch문이 실행된다.
switch에서도 마찬가지로 분모에 0이 들어왔을 때 예외를 발생시켜 throw 하고, catch 문들 중 해당 예외에 맞는 catch 문이 실행된다.
예외를 발생 시켜 throw하지 않는 방식으로도 try ~ catch 를 활용할 수 있다.
아래는 계산 관련 필드와 메서드가 선언되어 있는 클래스를 실행해보는 메인 메서드의 모습 중 일부이다.
계산할 숫자, 연산자 등 Scanner를 통해 입력받는 값이 많아, 오류가 많을 것으로 예상 된다.
따라서 기존에 작성했던 모든 코드들을 try {} 에 넣고,
catch (Exception) {} 을 추가하여,
예상치 못한 예외가 발생하였을 때, 비정상 종료 없이 계산기를 계속 실행할 수 있도록 하였다.

