CHANGEL
SOLID BASICS
CHANGEL

공지사항

  • DEV.CHANGEL PROFILE
  • SOLID BASIC (289)
    • 공부 STUDY (115)
      • JAVA (57)
      • C | C++ (34)
      • CS (11)
      • MySQL (2)
      • ALGORITHM (1)
      • HTML (2)
      • CSS (2)
      • JS (2)
      • CODING (0)
      • MINI PROJECT (3)
    • 스프링 SPRING (21)
      • [SPRING] 김영한 스프링 입문 (11)
      • [SPRING] 남궁성 스프링의 정석 (1)
      • [SPRING] 스프링 핵심원리 (9)
    • 전공 수업 CS (65)
      • Computer Network (13)
      • algorithms (21)
      • Computer Architecture (7)
      • Software Engineering (4)
      • Data Structure (2)
      • DataBase (1)
      • Digital Engineering (14)
      • Discrete Mathematics (3)
      • Introduction to programming (0)
      • Mobile Software (0)
      • Intelligence and Informatio.. (0)
    • 대외활동 (35)
      • 신한은행 대학생 홍보대사 34기 (8)
      • SKT T프렌즈 5기 (13)
      • SK DEVOTION YOUNG 1기 (9)
      • 성균관 대학교 공학교육혁신센터 수강 (3)
      • 수상 기록 (1)
    • 솝트 33기 안드로이드 (7)
      • [솝트 33기] 회고록 (0)
      • [솝트 33기] 안드로이드 왕초보 스터디 (2)
      • [솝트 33기] 코틀린 스터디 (0)
      • [솝트 33기] Git을 털어보자 깃털 스터디 (4)
    • 멋쟁이사자처럼 11기 (6)
      • 멋사 회고록 (4)
      • 백엔드 세션 (1)
      • 기획 세션 (1)
      • 연합해커톤 운영단 (기획팀) (0)
    • 백준 BAEKJOON (16)
    • 독서 BOOK (10)
    • 자격증 CERTIFICATE (1)
    • 준비 서류 및 회고록 MEMOIR (7)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • 글쓰기

최근 댓글

인기 글

CHANGEL

SOLID BASICS

[JAVA] 예외처리( exception handing ) -(2)
공부 STUDY/JAVA

[JAVA] 예외처리( exception handing ) -(2)

2023. 1. 15. 11:06

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 { // 예외 발생 유무에 상관없이 실행 될 코드 }​

 

'공부 STUDY > JAVA' 카테고리의 다른 글

[JAVA] Object 클래스, 오버라이딩  (0) 2023.01.15
[JAVA] 예외처리( exception handing ) - (3)사용자 정의 exception  (0) 2023.01.15
[JAVA] 내부클래스( inner class ), 익명클래스( anonymous class )  (0) 2023.01.15
[JAVA] 인터페이스 (interface)  (0) 2023.01.15
[JAVA] 예외처리 (Exception) -(1)  (0) 2023.01.14
    '공부 STUDY/JAVA' 카테고리의 다른 글
    • [JAVA] Object 클래스, 오버라이딩
    • [JAVA] 예외처리( exception handing ) - (3)사용자 정의 exception
    • [JAVA] 내부클래스( inner class ), 익명클래스( anonymous class )
    • [JAVA] 인터페이스 (interface)
    CHANGEL
    CHANGEL
    NOT GIVING UP | SOLID BASICS

    티스토리툴바