예상 가능한 실패를 구체적인 예외별로 처리합니다.
try 블록에는 실패할 수 있는 최소 코드만 두고 catch에서 처리 가능한 예외를 구체적으로 잡습니다. finally는 성공과 실패 모두에서 정리 작업을 수행합니다.
parseInt가 hello를 숫자로 바꾸지 못해 NumberFormatException을 던지면 try의 남은 줄은 건너뛰어 value 출력이 실행되지 않습니다. catch는 For input string: 뒤에 따옴표로 감싼 hello가 붙은 메시지를 출력하고 finally가 처리 완료를 찍습니다. 이 예외는 IllegalArgumentException의 하위 클래스라 둘을 따로 잡으려면 구체적인 쪽의 catch를 먼저 써야 컴파일됩니다.
checked exception은 호출자가 처리나 전파를 선언해야 하고 RuntimeException 계열은 주로 프로그래밍 계약 위반을 나타냅니다.
사용자 메시지와 내부 로그를 분리하고 원래 stack trace와 문맥을 보존합니다.
catch(Exception)으로 모든 오류를 조용히 무시하면 실제 버그와 중단 원인을 숨깁니다.
직접 바꿔보세요0으로 나누는 경우를 별도 처리하세요.
실행 버튼을 누르면 결과가 여기에 표시됩니다.