package ch08exception;
public class MyException01 {
public static void main(String[] args) {
int x =3, y=0;
int[] arr = {10,20,30};
try{
arr[3] = 50;
System.out.println(x/y);
}catch(ArithmeticException ex){
System.out.println("0으로 나누면 안돼요....");
}catch(ArrayIndexOutOfBoundsException ex){
System.out.println("문자열 : " + ex.toString());
System.out.println("메시지 : " + ex.getMessage());
System.out.println("배열 요소 번호 초과");
ex.printStackTrace();
}catch(Exception ex){
System.out.println("기타 나머지 예외 발생");
}finally {
System.out.println("이 구문은 예외 발생여부와 상관없이 무조건 실행됩니다.");
System.out.println("파일 닫기 또는 데이터베이스 접속 종료시 많이 사용됩니다.");
}
}
}
- try-catch
try{}catch(){}fially{}
- 아래와 같은 형식으로 만든다.
- catch()는 여러개 사용할 수 있다.
- fially는 선택사항이지만 사용하는 것을 권장한다.
- 예외 객체, 0으로 나눴을 때 발생하는 예외
}catch(ArithmeticException ex){ //ArithmeticException는 0으로 나눴을 때 발생하는 예외. ex는 예외 객체이다.
System.out.println("0으로 나누면 안돼요....");
- ex를 예외 객체라고 부르며, err 또는 e로 많이 표현한다.
- 클래스 객체 = new 생성자(); 예외가 발생하여 catch가 받을 때 생성자가 실행된다. catch가 받기 전에 예외 객체는 null 상태이다.
- printStackTrace() 메서드
- ex.printStackTrace(); //이건 잘 기억해야함. 적어주는 것이 좋음.
- 예외(Exception)나 오류(Error)가 발생했을 때 스택 추적(Stack Trace)을 출력하는 데 사용된다.
- 모든 예외의 슈퍼클래스
}catch(Exception ex){
System.out.println("기타 나머지 예외 발생");
- Exception은 모든 예외의 슈퍼클래스이다. 모든 예외를 받을 수 있다.
- finally
}finally {
System.out.println("이 구문은 예외 발생여부와 상관없이 무조건 실행됩니다.");
System.out.println("파일 닫기 또는 데이터베이스 접속 종료시 많이 사용됩니다.");
- 파일 열기는 아님. finally는 접속을 끊을 때 사용. 즉, 마무리 작업할 때 쓴다. fially는 옵션이지만 사용을 강력 권장한다.