



발생된 예외를 잡을 때 사용.
Compile Exception은 반드시 try ~ catch 처리해야 하고,
Runtime Exception은 try ~ catch를 하지 않아도 에러가 발생하지 않는다.
문법 )
try{
예외발생예상코드;
}catch(예외처리클래스 객체명){
예외가 발생했을 때 처리할 코드;
}
String a = "2024"
try{
int i = Integer.parseInt(a);
//예외가 발생하지 않을 때 실행되어야 할 코드 정의;
}catch(NumberFormatException nfe){
//예외가 발생했을 때 사용자에게 제공할 코드 정의;
}
catch안에서 예외처리 객체가 제공하는 예외메시지를 출력할 수 있다.
Exception 객체에서 제공
예외메시지는 비 정상상태의 출력이므로 System클래스의 err필드를 사용하여 출력한다.
System.err.println(예외메시지 출력);

간단한 예외메시지 출력 ) - 모든 예외처리 클래스에서 사용할 수 있다.
String msg = 예외객체명.getMessage();예외처리 클래스와 메시지 )
예외객체명 => 예외객체명.toString();자세한 예외메시지 출력 ) - 예외발생 라인수, 예외와 관련된 모든 클래스를 추적하여 출력.
예외객체명.printStackTrace(); // console에 출력까지 해주는 methodtry{
예외발생 예상코드
예외발생 예상코드
}catch( 예외처리클래스 객체명 ){
}catch( 예외처리클래스 객체명 ){
}finally{
반드시 실행되어야 할 코드;
}method안에서 발생되 예외를 던질 때 사용.
throws로 던져진 예외는 호출하는 곳에서 try~catch로 처리해야 한다.
예외발생 예상 코드와 예외처리 코드를 분리할 때 사용.
method 뒤에 정의
throws로 던져진 예외는 method안에서 try~catch할 필요가 없다.
문법 )
throws 예외처리클래스들...
접근지정자 반환형 method명( 매개변수 ,,,,)throws 예외처리클래스들,,,{
A코드
예외발생 예상코드
B코드 // 예외가 발생하면 실행되지 않는다.
}
호출 )
try{
method명( 값 ,,,, );
}catch( 예외처리 클래스명 객체명 ){
}
throw new 예외처리클래스(); //error 발생하므로 try ~ catch로 감싸든지, throws 날려 사용(권장).
생성자에서 예외 발생시 출력할 메시지를 부모클래스(Exception)의 생성자로 전달한다.
=> 에러메세지로 출력된다.
Exception 상속


try(자원 사용객체){
//자원 사용객체 -> IOStream , SQL 연결
자원사용객체 사용하는 코드정의 ;
}catch(예외처리클래스 객체명){
예외발생 처리 코드 정의.
}BufferedReader br = null;
try{
br = new BufferedReader(
new InputStreamReader(System.in));
//System.in : Static을 끊지 않는다.
String str = br.readLine();
}catch(IOException ie){
}finally{
if(br!=null){
br.close();
}
}
}
//Memory leak를 막기 위해서 스트림은 반드시 끊어야 한다.try(BufferedReader brr = new BufferedReader(
new InputStreamReader(System.in))){
String str = br.readLine();
}catch(IOException ie){
}
}
// 스트림을 끊는 코드를 작성하지 않아도 사용된 스트림을 JVM에서 자동으로 끊어준다.