예외처리
자바 안정성을 추구하는 언어이다. 즉, 여러가지 오류에 대해 핸들링을 할 수 있도록 지원한다.
즉, 예외처리를 이용하여 프로그램이 비정상종료되는 것을 막고, 로그를 남겨 원인을 파악할 수 있게 하는 프로그래밍이 필요하다.
등 무수히 많은 클래스가 존재한다.
예외처리 방법
try 구문 안에서 예외(오류)가 발생하면 catch문으로 가서 처리를 하고 그 후 프로그래머가 작성한 로직을 그대로 실행.
그대로 실행하기 때문에 마지막 end 글자가 출력됨을 알 수 있다. 예제에서는 예외 클래스에 toString 메서드를 출력한 것. 논리적으로 프로그래머가 예외처리를 할 수 있도록 코딩 해야함.(프로그램이 비정상 종료가 되지 않음.)
catch 구문 다음에 finally 구문을 추가하면 반드시 finally구문이 실행된다. 예외가 발생하든 발생하지 않든 반드시 실행되는 구문이다.
파일 입출력을 할때 finally 구문에서 파일을 닫아주는 식으로 많이 활용된다.
파일이 없는 상황에 예외처리이다.
finally구문을 사용하면 코드가 길어지는 경향이 있다.
특정 경우에서(ex- finally에서 파일 닫는 상황) 이를 해결하기 위한 try-with-resources 구문이 있다.
사용법
1. AutoCloseable 인터페이스 구현
정상적인 경우에는 AutoCloseable를 구현한 클래스에 close가 호출됨.(finally 없이 가능)
예외가 발생하는 경우에는
close함수가 호출되고, catch 구문이 실행된다.
throw new Exception();은 강제로 예외를 발생시킬때 사용한다.
현재 클래스에서 예외를 처리하고 싶지 않을때는 다른 클래스로 예외처리 의무를 떠넘길 수 있다.(throws 활용)
파일이름과 클래스이름을 받아 클래스 이름을 리턴하는 클래스이다. 클래스에서 throws를 사용하여 예외처리 의무를 미뤘기 때문에 사용하는 쪽에서 예외처리를 해줘야한다.
호출하는 쪽에서 오류 핸들링하는 모습.
어떤 오류가 발생할지 모를경우 가장 상위클래스인 Exception을 핸들링 하면된다. 하지만 해당 방법은 catch구문중 가장 아래쪽에 위치해야한다. 가장 위에 선언하면 하위클래스 오류를 핸들링 했는데도 불구하고 모든 오류를 Exception으로 처리하기 때문이다.
'JAVA' 카테고리의 다른 글
[JAVA] 기초문법 - 파일입출력(2) (0) | 2022.01.05 |
---|---|
[JAVA] 기초문법 - 파일입출력(1) (0) | 2022.01.05 |
[JAVA] 기초문법 - 스트림 (0) | 2022.01.05 |
[JAVA] 기초문법 - 람다식 (0) | 2021.12.01 |
[JAVA] 기초문법 - 내부클래스 (0) | 2021.12.01 |