오류란 무엇인가
- 컴파일 오류 : 프로그램 코드 작성 중 발생하는 문법적 오류
- 실행 오류 : 실행중인 프로그램이 의도하지 않은 동작을 하거나 (bug)프로그램이 중지되는 오류(runtime error)
- 자바는 예외 처리를 통하여 프로그램의 비정상 종료를 막고 log를 남길 수 있음
오류와 예외 클래스
- 시스템 오류(error) : 가상 머신에서 발생, 프로그래머가 처리할 수 없음, 동적 메모리를 다 사용한 경우, stack over flow 등
- 예외(Exeception) : 프로그램에서 제어 할 수 있는 오류, 읽으려는 파일이 없는 경우, 네트워이나 소켓 연결 오류 등, 자바 프로그램에서는 예외에 대한 처리를 수행함

예외 클래스
모든 예외 클래스의 최상위 클래스는 Exeption 클래스

try-catch 문으로 예외 처리하기
try{
예외가 발생 할 수 있는 코드 부분
}catch(처리할 예외 타입 e){
try블록 안에서 예외가 발생했을 때 수행되는 부분
}
try-catch-finally 문으로 예외 처리하기
try{
예외가 발생 할 수 있는 코드 부분
}catch(처리할 예외 타입 e){
try블록 안에서 예외가 발생했을 때 수행되는 부분
}finally{
예외 발생여부와 상관없이 항상 수행되는 부분
리소스를 정리하는 코드를 주로 씀
}
try-with-resources 문
- 리소스를 자동으로 해제 하도록 제공해주는 구문
- 해당 리소스가 AutoCloseable을 구현한 경우 close()를 명시적으로 호출하지 않아도 try{}블록에서 오픈된 리소스는 정상적인 경우나 예외가 발생한 경우 모두 자동으로 close()가 호출됨
- 자바 7부터 제공됨
- FileInputStream의 경우 AutoCloseable을 구현하고 있음

AutoCloseable 인터페이스 사용하기
- Autocloseable 인터페이스를 구현한 클래스를 만들고 close()가 잘 호출되는지 확인해본다

향상된 try-with-resources문
