본문 바로가기
스터디일지/JAVA

[2023.07.31] 자바의 예외 처리

by 똥쟁이핑크 2023. 7. 31.

2023.07.31 - [코드문제풀이] - [자바] 11399번 ATM

 

[자바] 11399번 ATM

https://www.acmicpc.net/problem/11399 11399번: ATM 첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000) www.acmicpc.net 문제 인

teresa88.tistory.com

2023.07.31 - [코드문제풀이] - [자바] 1934번 최소공배수

 

[자바] 1934번 최소공배수

https://www.acmicpc.net/problem/1934 1934번: 최소공배수 두 자연수 A와 B에 대해서, A의 배수이면서 B의 배수인 자연수를 A와 B의 공배수라고 한다. 이런 공배수 중에서 가장 작은 수를 최소공배수라고 한다

teresa88.tistory.com

2023.07.31 - [코드문제풀이] - [자바] 1436번 영화감독 숌

 

[자바] 1436번 영화감독 숌

https://www.acmicpc.net/problem/1436 1436번: 영화감독 숌 666은 종말을 나타내는 수라고 한다. 따라서, 많은 블록버스터 영화에서는 666이 들어간 제목을 많이 사용한다. 영화감독 숌은 세상의 종말 이라는

teresa88.tistory.com

2023.07.31 - [코드문제풀이] - [자바] 2231번 분해합

 

[자바] 2231번 분해합

https://www.acmicpc.net/problem/2231 2231번: 분해합 어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한

teresa88.tistory.com

2023.07.31 - [코드문제풀이] - [자바] 2798번 블랙잭

 

[자바] 2798번 블랙잭

https://www.acmicpc.net/problem/2798 2798번: 블랙잭 첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의

teresa88.tistory.com

 

 

1. 자바의 예외

https://blog.kakaocdn.net/dn/bRaBb4/btrfp2ptIHm/ktEnMZhEdfGcbSZXv5Kop1/img.png

예외란?

  • 사용자의 잘못된 조작 또는 개발자의 잘못된 코딩으로 인해 발생하는 프로그램 오류
  • 예외가 발생하면 프로그램은 종료
  • 예외처리를 하면 종료하지 않고 정상 실행 상태가 유지되도록 한다.
  • 예외는 클래스로 관리한다.
  • java.lang.Exception

 

예외의 종류

  • 일반 예외(Checked Exception)
    • 컴파일 체크 예외 - 예외 처리 코드가 없으면 컴파일 오류가 발생하므로 꼭 처리 해야하는 검사형 예외이다.
    • IOException, SQLException등
  • 실행 예외(Runtime Exception)
    • 컴파일 하는 과정에서 예외 코드를 검사하지 않는 예외
    • 컴파일 시 예외 처리를 하지 않아도 컴파일 할 수 있는 비 검사형 예외
    • JVM에서 해당하는 실행 예외 객체를 생성한다.
    • 실행 예외 종류는 밑에 서술한다.

 

예외 처리 방법

  • 예외 복구
    • 예외 상황을 파악하고 문제를 해결하여 정상 상태로 돌려놓는 방법
  • 예외 회피
    • throws 키워드를 통해 직접 처리하지 않고 호출한 쪽으로 넘기는 방법
  • 예외 전환
    • 회피와 비슷하게 throws로 예외처리를 하지만 그냥 넘기지 않고 적합한 의미를 가진 예외로 변경하여 넘긴다.

 

자주 발생 하는 예외

  1. NullPointerException(NPE)
    • 객체 참조가 없는 상태 → Null 값을 가지고 있는 . (도트)를 사용할 때 발생한다.
    • 객체가 없는 상태에서 객체를 사용하려 할 때 발생한다.
  2. ArrayIndexOutOfBoundsException
    • 배열을 다룰때 index의 범위를 초과해서 사용하는 경우 발생한다.
  3. NumberFormatException
    • 문자열로 있는 데이터를 숫자로 바꿀때 숫자로 변환될 수 없는 문자열이 오면 발생한다.
  4. ClassCastException
    • 타입변환(Casting)은 상위 클래스와 하위 클래스간에 발생 하고 구현 클래스와 인터페이스 간에도 발생한다.
    • 위와 같은 관계가 아니라면 변환 할 수 없는데 억지도 시도할 경우 발생 한다.

 

예외 처리 코드

 

1. try ~ catch ~ finally

  • 예시 코드
    try {
        // 예외가 발생할 가능성이 있는 코드를 넣는다.

    }
    catch (예외 클래스 e){
        예외 처리; // 예외 처리를 한다.
    }
    finally {
        // 무슨 일이 있어도 항상 실행
    }

 

2. 다중 catch문

  • catch 문을 여러개 작성해도 먼저 발생한 catch 블록만 실행된다.
  • 상위 예외 클래스가 하위 예외 클래스보다 밑에 위치하게 작성해야 한다.
  • 예시 코드
    try {
        // 예외가 발생할 가능성이 있는 코드를 넣는다.
        }
    catch (예외 클래스 1 e){
        예외 처리; // 예외 처리를 한다.
    }
    catch (예외 클래스 2 e){
        예외 처리; // 예외 처리를 한다.
    }

 

3. 예외 넘기기

  • 메소드를 호출한 곳으로 예외처리를 넘긴다.
  • throws 키워드를 사용한다.
  • 예시 코드
public void method1(){
 try {
   method2(); // throws가 붙은 method2는 반드시 이렇게 try문 안에서 호출되어야 함.
   // method2가 떠넘긴 예외를 아래 catch문을 통해 처리해 주고 있다.
}
 catch (ClassNotFoundException e1) {
  System.out.println("클래스가 존재하지 않음.");
}

public void method2() throws ClassNotFoundException {
 Class clazz = Class.forName("java.lang.String22");
}

 

 

 

 

 

 

참고한 사이트

https://dreamcoding.tistory.com/70

 

[자바 JAVA] 예외의 종류

자바에서 자주 발생하는 예외들과 예외에 대한 처리들에 대해서 정리 해 보도록 하겠습니다. 에러와 예외 컴퓨터 하드웨어의 동작의 오작동 또는 고장으로 인해 응용프로그램 실행 오류가 발생

dreamcoding.tistory.com

https://chanhuiseok.github.io/posts/java-3/

 

자바(JAVA) - exception의 종류와 예외 처리(Exception Handling, try-catch)

컴퓨터/IT/알고리즘 정리 블로그

chanhuiseok.github.io

https://jhyonhyon.tistory.com/66

 

[Java] 예외(Exception)의 종류

개발하면서 절대 안마주쳤으면 하지만 결국에는 마주하게되는게 바로 예외인 것 같습니다. 이 예외에도 큰 틀에서 종류가 존재한다는 것을 알고 계셨나요? 지금부터 바로 알아보겠습니다! 예외

jhyonhyon.tistory.com

https://butter-shower.tistory.com/87

 

[Java] 예외처리 - try~catch 문, throws문, 예외의 종류

오류의 종류 에러 (Error) 개발자가 해결할 수 없는 치명적인 오류 하드웨어의 잘못된 동작 또는 고장으로 인한 오류 에러가 발생되면 프로그램 종료 정상 실행 상태로 돌아갈 수 없음 예외 (Excepti

butter-shower.tistory.com