예외처리 Exception
프로그램 오류
프로그램 수행 시 치명적인(혹은 예기치 못한) 상황이 발생하여 비정상 종료 상황이 발생한 것,
프로그램 에러라고도 함
오류의 종류
java.lang.Object
java.lang.Throwable
java.lang.Exception // 여기까지는 공통으로 상속받는다.
try: exception 발생 가능성이 있는 코드를 안에 기술
exception이 발생하지 않을 것 같은 코드를 넣어도 상관은 없지만 try문 안에 있는 모든 코드가 exception이 발생하지 않을 것 같은 코드라면 빨간 줄이 뜬다.
catch : try 구문에서 exception 발생 시 해당하는 exception에 대한 처리 기술
catch문은 여러개 가능하나(여러 개의 exception 처리가 가능하나) 상속 관계를 고려하여 순서에 맞게 써줘야한다.
finally : exception 발생 여부와 관계없이 꼭 처리해야 하는 로직 기술
finally가 들어갈 수도 있고 안 들어갈 수도 있다. 꼭 수행해야하는 것들을 넣어준다.
중간에 return문을 만나도 finally 구문은 실행되지만 System.exit();을 만나면 무조건 프로그램 종료
주로 java.io나 java.sql 패키지의 메소드 처리 시 이용
throw's' => 위임
throw => Exception 강제 발생
메소드나 생성자가 Exception을 발생시킬 수 있다.
public FileReader(String fileName)
throws FileNotFoundException
String을 매개변수로 가지는 FileReader라는 생성자가 FileNotFoundException이라는 예외를 발생시킬 수 있다.
public String readLine()
throws IOException
BufferedReader의 생성자 readLine()이 IOException을 발생시킬 수 있다.
public void close()
throws IOException
BufferedReader의 메소드 close()가 IOException을 발생시킬 수 있다.
Class IOException
java.lang.Object
java.lang.Throwable
java.lang.Exception
java.io.IOException
Direct Known Subclasses: EOFException
end of file
IOException이 처리할 수 있는 범위가 EOFException보다 훨씬 크다.
※ 사용자 정의 클래스 - 내가 직접 만든 클래스 (Academy, Teacher, Student, Parent, Child 등)
사용자 정의 예외 - 내가 직접 만든 예외
★Exception 클래스를 상속받아★ 예외 클래스를 작성하는 것으로
Exception 발생하는 곳에서 throw new 예외클래스명()으로 발생
※ Object가 모든 클래스의 최상위 클래스라면 Exception은 모든 예외 클래스의 상위 클래스