티스토리 뷰

728x90

 


오류의 종류

1. 오류

• Error

• 시스템이 종료되어야 할 수준의 수습할 수 없는 심각한 문제

• 시스템 레벨에서 발생

     - 메모리 부족, 스택오버플로 등...

 

2. 예외

• Exception

• 개발자가 구현한 로직에서 발생한 실수나 사용자의 영향에 의해 발생

     - NullPointerException, IllegalArgumentException 등...

 

* 오류와 예외는 다른 것이지만 보통 명시적으로 구분해야할 때가 아니면 오류라고 통일해서 부르는 것 같다.

 

예외 처리

• 프로그래머가 예기치못한 예외의 발생에 미리 대처하는 코드를 작성하는 것

• 실행중인 프로그램의 비정상적인 종료를 막고, 상태를 정상 상태로 유지하는 것이 목적

• try {

       // 예외가 날 가능성이 있는 코드

  } catch (예외변수명: 예외타입) {

       // 예외가 날 경우 실행할 코드

  }

• try 안의 코드에서 예외가 나지 않을 경우 정상 진행, 예외가 날 경우 catch에서 해당 예외를 어떻게 처리할 것인지 작성.

• 발생하는 예외의 종류마다 다른 catch 가능.

     - list 범위 초과 예외가 예상이 된다면 ArrayIndexOutOfBoundsException을 catch로 잡으면 된다.

     - 어떤 종류의 예외가 발생할 지 예상할 수 없거나, 모든 종류의 예외를 잡고 싶으면 Exception을 사용.

          * Exception : 모든 종류의 예외를 포함하는 예외 타입. 모든 예외의 부모 클래스.

• try가 정상 실행됐든, 예외가 catch가 됐든 상관없이 마지막에 실행하고 싶은 코드가 있다면 finally를 사용.

import java.lang.Exception
import java.lang.ArrayIndexOutOfBoundsException
import java.lang.IllegalArgumentException

// try, catch를 사용하지 않았을 때
val NUMBERS: List<Int> = listOf<Int>(1, 2, 3)
NUMBERS.get(5) // 예외 발생 : 범위 초과

// try, catch 사용 : Exception으로 잡기
try {
    NUMBERS.get(5)
} catch (e: Exception) { // 모든 예외 캐치
    println(e) // ArrayIndexOutOfBoundsException 출력
}

// try, catch 사용 : 예외 특정
try {
    NUMBERS.get(5)
} catch (e: ArrayIndexOutOfBoundsException) { // 범위 초과 예외 캐치
    println("범위 초과")
}

// try, catch 사용 : 잘못된 예외 캐치
try {
    NUMBERS.get(5)
} catch (e: IllegalArgumentException) { // try에서 나오는 예외와 다른 예외 캐치
    println("적절하지 않은 인자") // 범위 초과 예외가 잡히지 않아서 예외 발생
}

// try, catch 사용 : 여러 오류 캐치, finally 사용
try {
    NUMBERS.get(5)
} catch (e: IllegalArgumentException) { 
    println("적절하지 않은 인자")
} catch (e: ArrayIndexOutOfBoundsException) {
    println("범위 초과") // 해당하는 예외가 잡힘
} finally {
    println("마지막에 무조건 실행")
}

 

* 예외의 종류를 다 외우고 있을 수 없기 때문에 먼저 Exception으로 모든 예외를 캐치하여 무슨 종류의 예외인지 확인해보는 것이 좋다.

 

참고 글

https://toneyparky.tistory.com/40

 

Java의 Error와 Exception 그리고 예외처리 전략

우아한테크코스(이하 우테코) 레벨 1 복습을 위한 글입니다. 자바는 오류가 발생하거나 발생할 여지가 있는 여러 상황에 대한 예외를 만들어두었습니다. 우리에게 익숙한 IllegalArgumentException을

toneyparky.tistory.com

https://catsbi.oopy.io/92cfa202-b357-4d47-8de2-b9b3968dfb2e

 

예외처리(exception handling)

목차

catsbi.oopy.io

 

 

 

 

 

 

 

이 글은

패스트 캠퍼스 Android 앱 개발의 정석 with Kotlin 올인원 패키지 Online

강의를 듣고 공부한 내용을 바탕으로 작성되었습니다.

 


728x90
댓글
공지사항