📌 오류(Error)
- System상에서 프로그램에 심각한 문제를 발생하여 실행중인 프로그램이 종료되는 것
📌 예외 처리(Exception Handling)
- 프로그램이 실행 중 오류가 발생했을 때 적절히 대응함으로써(handling) 다른 처리 방식으로 코드의 흐름을 옮기는 것
🌈 예외 Class 계층 구조
- Checked Exception : 예외처리를 해야 하는 Class
- Unchecked Exception : 예외처리를 해주지 않아도 되는 Class
🌈 1. Throws
- 메소드 선언 시 throws ExceptionName문을 추가하여 호출한 상위 메소드에게 처리를 위임
public void checkEnoughMoney(int price, int money) throws Exception{}
🌈 2. try-catch-finally
- 발생한 예외 타입과 일치하는 catch블록이 없으면 강제 종료된다.
- catch 블록 내에서
System.exit(0)
을 호출하면 프로그램을 종료할 수 있다.
try{
예외가 발생할 가능성이 있는 실행문(try 블록)
}
catch(처리할 예외 타입 선언){
예외 처리문(catch 블록)
}
finally{
예외 발생 여부와 상관없이 무조건 실행되는 문장(finally 블록)
}
🌈 3. try-with-resource
- finally에서 처리했던 close를 try문에서 자동으로 close처리한다.
- JDK 7부터 지원
try(BufferedReader br = new BufferedReader(new FileReader("C/data/text.txt"))){
}
catch{
}
🌈 Exception과 overriding
- Overriding시 throws하는 Exception의 개수와 상관없이 같거나 더 구체적인 범위로만 overriding이 가능하다.
public class Parent{
public void method() throws IOException{
}
}
public class Child extends Parent{
@override
public void method() throws EOFException{
}
}