컴파일 오류
프로그램 코드 작성 중 발생하는 문법적 오류
실행 오류
실행 중인 프로그램이 의도하지 않은 동작을 하거나(bug) 프로그램이 중지되는 오류
=> 예외 처리를 통해 프로그램의 비정상적 종료를 막고 log를 남길 수 있음!
오류와 예외 클래스
시스템 오류(Error)
- 가상 머신에서 발생해 프로그래머가 처리할 수 없음
- 동적 메모리가 없는 경우 스택 오버 플로우 등이 해당
예외(Exception)
- 프로그램에서 제어할 수 있는 오류
- 읽어 들이는 파일이 존재하지 않는 경우, 네티워크 연결이 끊어진 경우 등
IOException은 예외 처리를 해야 컴파일이 됨
RuntimeException은 try-catch를 걸지 않아도 컴파일이 됨
예외 클래스
- Arthmetic Exception : 정수를 0으로 나눈 경우 발생
- NullPointerException: 초기화되지 않은 Object를 사용하는 경우
- ArrayIndexOutOfBoundsException : 배열의 크기를 넘어선 위치를 참조하려는 경우
- FileNotFoundException : 참조하는 파일이 지정된 위치에 존재하지 않는 경우
FileInputStream : 주어진 이름의 파일의 데이터를 바이트 단위로 읽어들임
try-catch-finally를 이용한 오류 처리
try-with-resources
- 자바 7부터 제공
- 리소스를 자동 해제하도록 제공해주는 주문
- close()를 명시적으로 호출하지 않아도 try{} 블록에서 열린 리소스는 정상적인 경우, 예외가 발생한 경우 모두 자동 해제됨
- 해당 리소스가 AutoCloseable을 구현해야 함
-> finally 구문이 필요가 없음!
참고
자바 9부터는 외부 선언 변수를 대입해주는 기능을 가짐!
thorws를 이용하여 예외 처리 미루기
메인에서 예외 처리를 미루면 JVM으로 가고 에러가 남!
예외가 다양한 경우 예외 클래스를 가장 마지막에 넣기
Exception 클래스는 가장 마지막 블록에 위치해야 함!
throw는 예외를 발생시킴.
throw는 직접 예외를 만들고 싶을 때 사용함.