ss__jae2
타닥타닥 IT
ss__jae2
전체 방문자
오늘
어제

Github

  • 타닥타닥 IT (179)
    • 웹개발 (86)
      • JAVA (23)
      • DBMS (6)
      • HTML (9)
      • CSS (7)
      • JavaScript (12)
      • JSP (14)
      • Spring (15)
    • FrontEnd (63)
      • HTML (5)
      • CSS (12)
      • JavaScript (16)
      • React.js (14)
      • Node.js (16)
    • API (5)
    • SQLD (21)
      • SQLD (1)
      • 1과목 데이터 모델링의 이해 (11)
      • 2과목 SQL 기본 및 활용 (9)
    • CS Study (4)
      • 네트워크 (4)

공지사항

최근 댓글

최근 글

반응형
hELLO · Designed By 정상우.
ss__jae2

타닥타닥 IT

웹개발/JAVA

[JAVA] 예외처리( exception handing )

2022. 1. 28. 23:17
반응형

1. 프로그램 오류

  • 프로그램 실행 중 어떤 원인에 의해서 오작동을 하거나 비정상적으로 종료되는 경우가 있다. 이러한 결과를 초래하는 원인을 프로그램 에러 또는 오류라고 한다.
  • 이를 발생 시점에 따라 '컴파일에러( compile error )'와 '런타입에러( runtime error )'로 나눌 수 있는데 컴파일에러는 컴파일할 때 발생하는 에러이고 프로그램 실행 중에 발생하는 에러를 런타임에러라고 한다.

    컴파일에러 컴파일 시에 발생하는 에러( 주로 문법 )
    런타입에러 실행 시에 발생하는 에러( 배열 범위 벗어남 )
    논리적에러 실행은 되지만 의도와 다르게 동작하는 것
  • 자바에서는 실행 시( runtime ) 발생할 수 있는 프로그램의 오류를 에러( error )와 예외( exception ) 두 가지로 구분하였다.
  • 에러가 발생하면 프로그램의 비정상적인 종료를 막을 길이 없지만, 예외는 발생하더라도 프로그래머가 이를 적절한 코드를 미리 작성해 놓음으로써 프로그램의 비정상적인 종료를 막을 수 있다.

    에러( error ) 프로그램 코드에 의해서 수습될 수 없는 심각한 오류
    예외( exception ) 프로그램 코드에 의해서 수습될 수 있는 미약한 오류

2. 예외처리 try-catch 문

  • 프로그램 실행 도중에 발생하는 에러는 어쩔 수 없지만, 예외는 프로그래머가 이에 대한 처리를 미리 해주어야 한다.
  • 예외처리란 프로그램 실행 시 발생할 수 있는 예기치 못한 예외의 발생에 대비한 코드를 작성하는 것이며 예외처리의 목적은 예외의 발생으로 인한 실행 중인 프로그램의 갑작스러운 비정상 종료를 막고 정상적인 실행상태를 유지할 수 있도록 하는 것이다.
    try {
    		// 예외가 발생할 수 있는 코드
    } catch ( 예외클래스 참조변수 ) {
    		// 예외가 발생했을 때 처리할 코드
    } catch ....​​
  • try 블록 내에서 예외가 발생한 경우
    • 발생한 예외가 일치하는 catch 블록이 있는지 확인한다.
      * 예외클래스 참조변수 --> Exception e( 이 클래스 안에는 많은 것들이 있다. )
      * e.getMessage로 어떤 이유로 예외 되었는지 알 수 있다.
    • 일치하는 catch 블록을 찾게 되면 그 catch 블록 내의 문장들을 수행하고 전체 try-catch문을 빠져나가서 그다음 문장을 수행한다.
    • catch문을 찾지 못하면 예외는 처리하지 않는다.
  • try 블록 내에서 예외가 발생하지 않은 경우
    • catch 블록을 거치지 않고 try-catch문을 빠져나가서 수행을 계속한다.

3. 예외의 발생과 catch 블록

  • catch 블록은 괄호()와 블록{} 두 부분으로 나누어져 있는데 괄호 내에서 처리하고자 하는 예외가 같은 타입의 참조변수를 선언해야 한다.
  • 예외가 발생하면 예외에 해당하는 클래스의 인스턴스가 만들어진다.
  • 또한 예외가 발생했을 때 생성되는 예외 클래스의 인스턴스에는 발생한 예외의 대한 정보가 있으며 아래와 같다.

    getMessage() 발생한 예외 클래스의 인스턴스에 저장된 메시지를 얻을 수 있다.
    printStackTrace() 예외 발생 당시에 호출스택에 있었던 메소드의 정보와 예외 메시지를 화면에 출력한다.

 

4. 예외 발생시키기

  • 키워드 throw를 사용해서 프로그래머가 고의로 예외를 발생시킬 수 있으며 방법은 아래의 순서를 따르면 된다.
    • 먼저 new를 이용해서 발생시키려는 예외 클래스의 객체( 인스턴스 )를 만든 다음
    • throw를 이용해서 예외를 발생시킨다.

5. 메소드의 예외 선언하기

  • 예외를 try-catch문을 사용하는 것 외에 예외를 메소드에 선언하는 방법이 있다.
  • 메소드에 예외를 선언하려면 메소드의 선언부에 throws를 사용해서 메소드 내에서 발생할 수 있는 예외를 적어주면 된다.
  • 만약, 예외가 여러 개일 경우 쉼표로 구분해서 여러 개를 적어준다.
  • 예외가 발생했으면 자기의 예외를 호출한 곳에 예외를 던져 주는 것이다.

6. finally 블록

  • finally 블록은 예외 발생 여부에 상관없이 실행되어야 할 코드를 포함시킬 목적으로 사용된다.
  • try-catch-finally의 순서로 구성된다.
    try {
    		// 예외가 발생할 수 있는 코드
    } catch ( 예외클래스 참조변수 ) {
    		// 예외가 발생했을 때 처리할 코드
    } finally {
    		// 예외 발생 유무에 상관없이 실행 될 코드
    }​

반응형
저작자표시 (새창열림)

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

[JAVA] 컬렉션 프레임워크( Collection Framework ) - ArrayList, LinkedList, Stack & Queue, Iterator  (0) 2022.02.03
[JAVA] Object, String, Math, Wrapper 클래스  (0) 2022.01.29
[JAVA] 내부클래스( inner class ), 익명클래스( anonymous class )  (0) 2022.01.27
[JAVA] 인터페이스( interface )  (0) 2022.01.26
[JAVA] 추상클래스( abstract class )  (0) 2022.01.26
    '웹개발/JAVA' 카테고리의 다른 글
    • [JAVA] 컬렉션 프레임워크( Collection Framework ) - ArrayList, LinkedList, Stack & Queue, Iterator
    • [JAVA] Object, String, Math, Wrapper 클래스
    • [JAVA] 내부클래스( inner class ), 익명클래스( anonymous class )
    • [JAVA] 인터페이스( interface )
    ss__jae2
    ss__jae2

    티스토리툴바