티스토리 뷰

개발/Java

[Java] 예외 처리

Ikhyeon IT 2023. 6. 20. 02:29

목표

자바의 예외 처리에 대해 학습하세요.

학습할 것 (필수)

  • 자바에서 예외 처리 방법 (try, catch, throw, throws, finally)
  • 자바가 제공하는 예외 계층 구조
  • Exception과 Error의 차이는?
  • RuntimeException과 RE가 아닌 것의 차이는?

자바에서 예외 처리 방법 (try, catch, throw, throws, finally)

 

try - try블랙 내에서 에러가 발생한 경우 해당 에러와 일치하는 catch문이 있으면 해당 catch문을 실행한다.

public static void main(String[] args) throws Exception {
        System.out.println("start");
        try {
            System.out.println(0 / 0);      // 오류 발생
            System.out.println("middle");   
        } catch (ArithmeticException e) {
            System.out.println("end");
        }
    }

0/0을 시행하여  ArithmeticException이 발생했다.

이럴 경우 try 내에서 에러가 발생한 부분에서 catch로 바로 넘어간다.

 

public static void main(String[] args) throws Exception {
        System.out.println("start");
        try {
            System.out.println(0 / 0);
            System.out.println("middle");
        } catch (ArithmeticException e) {
            System.out.println(e.getMessage());
        }
}

catch (ArithmeticException e) 여기서 e의 의미는 무엇인지 궁금해져서 알아봤다.

e는 myException의 줄임말로 사용자가 커스텀하여 사용 가능하다.

또한 e는 객체로 사용할 수 있는데 아래와 같이 e.getMessage(), 혹은 e로 조회하면 어떤 에러인지 알 수 있다.

또한 printStackTrace등 다양한 메서드를 지원하는데 이를 이용하여 에러 로그를 표시할 수 있다.


출력


Throw로 예외 발생시키기

void method() throws Exception

다음과 같이 메서드에 throws를 이용하여 예외발생 가능성을 미리 알릴 수 있다.

이를 사용하면 개발자들에게 에러에 대한 처리를 강요할 수 있기 때문에

오류를 예측 가능하게 하고, 견고한 프로그램 코드를 작성할 수 있다.


Finally 사용법

        try {
            System.out.println("start");
            throw new Exception();
        } catch (Exception e) {
            System.out.println(e);
        } finally {
            System.out.println("end");
        }

 

finally블럭 안에 있는 문장은 예외 발생 여부와 상관없이 항상 수행한다.


출력


 

Exception과 Error의 차이는?

 

 

Exception

  1. 정상적으로 프로그램 실행 중에 발생하며 예상할 수 있다.
  2. 예외의 예로는 IOException, SQLException, NullPointerException 및 IllegalArgumentException이 있다.

Error

  1. 정상적인 프로그램 실행 범위를 벗어나 예외적인 상태, 복구하기 어려운 심각한 문제를 의미한다.
  2. 코드에서 보이는 오류보다는 시스템 수준이나 프레임워크와 같은 상위 수준에서 처리된다.
  3. 오류의 예로는 OutOfMemoryError, StackOverflowError, LinkageError 및 VirtualMachineError가 있다.
  4. 리소스 고갈, 내부 JVM 오류와 같은 중요한 문제를 나타낸다.

Exception의 과정


자바가 제공하는 예외 계층 구조

 

RuntimeException 외 클래스는 컴파일 시 오류를 잡아준다. -> 치명적인 오류다.

  • 반드시 예외처리를 해야 한다 -> (checked Exception 이라고도 한다)

 

RuntimeException(RE) 클래스는 컴파일 시 오류를 잡아주지 않는다 -> 치명적인 오류가 아니다.

  • RE는 프로그래머가 실수로 발생하는 것 이기에 예외처리를 강제하지 않는다.
  • 만약 강제한다면 배열을 사용할 때 NullpointException, IndexOutOfBoundException을 항상 예외로 가지고 다녀야 한다. -> (unchecked Exception 이라고도 한다)

Checked Exception

  1. 확인된 예외는 컴파일 타임에 컴파일러에 의해 확인됩니다.
  2. Exception 클래스의 하위 클래스입니다(RuntimeException 및 해당 하위 클래스 제외).
  3. 확인된 예외를 던질 수 있는 메서드는 try-catch 블록을 사용하여 예외를 처리하거나 throws 절을 사용하여 메서드 서명에서 선언해야 합니다.
  4. 확인된 예외는 일반적으로 선의의 호출자가 합리적으로 처리하거나 예상할 수 있는 조건에 사용됩니다.
  5. Java에서 확인된 예외의 예로는 IOException, SQLException, ClassNotFoundException 및 FileNotFoundException이 있습니다.

UnChecked Exception

  1. 확인되지 않은 예외는 컴파일 타임에 컴파일러에서 확인하지 않습니다.
  2. 이들은 RuntimeException 클래스 또는 그 하위 클래스의 하위 클래스입니다.
  3. 확인되지 않은 예외를 명시적으로 처리하거나 선언하는 데 메서드가 필요하지 않습니다.
  4. 확인되지 않은 예외는 일반적으로 논리적 오류, 잘못된 인수 또는 null 참조와 같은 프로그래밍 오류를 나타내는 조건에 사용됩니다.
  5. Java에서 확인되지 않은 예외의 예로는 NullPointerException, IllegalArgumentException, ArrayIndexOutOfBoundsException 및 ArithmeticException이 있습니다.

 


출처

#TCPSchool

 

코딩교육 티씨피스쿨

4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등

tcpschool.com

#자바의 정석

 

자바의 정석 기초편 세트 (전2권) : 열린북스

[열린북스] 튼튼,꼼꼼, 안전하게 포장해서 발송 하겠습니다.

smartstore.naver.com

#블로그

 

자바 예외 처리

자바의 예외 처리에 대해 정리합니다. > > 백기선님과 함께하는 자바 9주차 스터디 과정입니다. > > 학습할 내용은 다음과 같습니다. > - 자바에서 예외 처리 방법 (try, catch, throw, throws, finally) > - 자

velog.io

 

'개발 > Java' 카테고리의 다른 글

[Java] 인터페이스  (0) 2023.06.15
[Java] 패키지  (0) 2023.06.14
[Java] 상속  (0) 2023.06.08
[Java] 클래스  (0) 2023.06.07
[Java] 제어문  (0) 2023.06.05
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함