예외 (Exception)
  
   - 우리가 에러라고 생각했던 빨간 글씨들을 예외라고 부른다
   - 프로그래머는 발생할 수 있는 예외를 미리 예상하고 대비해둘 수 있다 (예외 처리)
   - 자바의 문법을 틀리는 것은 예외가 아니라 컴파일 에러라고 부른다
  
    예외 처리 (try-catch문)
  
   - 예외가 발생할 수도 있는 코드를 try문 내부에 포함시킨다
   - try문 내부에서 예외가 발생하지 않으면 정상적으로 작동한다
   - try문 내부에서 예외가 발생하는 경우 발생한 예외에 대한 catch문으로 이동한다
   - 예외가 발생했을때 예외처리가 되어있지 않은경우 프로그램이 강제종료되지만
     해당 예외에 대한 처리가 되어있는 경우 프로그램이 강제종료되지 않는다
   - 예외가 발생하여 해당 catch문에 도착할 때 발생한 예외에 대한 정보를 담고있는
     인스턴스가 함께 도착한다
   - 예외 처리를 하지 않았을 때의 기본 동작은 e.printStackTrace()후 강제 종료이다
  
    finally
  
   - try문 내부에서 예외가 발생하던 안하던 무조건 실행하게 되는 문법

 

try {
   int size = 10 / 1; // 발생 가능한 예외 1
   int[] arr = new int[size];
   System.out.println(arr[-1]); // 발생 가능한 예외 2
} catch (java.lang.ArrayIndexOutOfBoundsException e) {
   System.out.println("인덱스가 잘못된 숫자입니다");
} catch (java.lang.ArithmeticException e) {
   e.printStackTrace();
   System.exit(-1);
}

 

스택(프로그램에서 함수 호출 순서를 기억하기 위한 자료구조)
main() -> plus() -> plus2() -> plus3()
plus3() -> plus2() -> plus() -> main()

 

try {
    System.out.println(plus(10));
} catch(ArithmeticException e) {
    e.printStackTrace();
}

try {
    int[] nums = new int[3];
    nums[(int)(Math.random() * 5)] = 7;


} catch (Exception e) {
    // Exception은 모든 예외객체의 조상 클래스이기 떄문에
    // 모든 예외가 이 catch문으로 도착할 수 있다
    System.out.println("예외가 발생했습니다!");
} finally {
    // try문 내부에서의 예외 발생 여부와 관계없이 무조건 실행하고 싶은 코드를 
    // finally에 적는다
    System.out.println(" /)/)");
    System.out.println("(  ..)");
    System.out.println("(  >$");
}

System.out.println("프로그램이 정상 종료되었습니다");

 

public static int plus(int a) {
    return plus2(a + 10);
}

public static int plus2(int a) {
    return plus3(a);
}

public static int plus3(int a) {
    return a / 10;
}

 

 

'JAVA' 카테고리의 다른 글

File  (0) 2024.06.29
JavaIO  (0) 2024.06.15
Calendar  (0) 2024.06.11
Date  (0) 2024.06.07
정규표현식 (Regex)  (0) 2024.06.07

+ Recent posts