본문 바로가기

OOP

예외(Exception)

1. 정의

  • 사용자의 잘못된 조작 또는 개발자의 잘못된 코딩으로 인해 발생하는 프로그램 오류

 

2. 일반 예외 vs 실행 예외

  • 일반 예외(Exception) → Checked Exception
    • 컴파일 시점에서 예외을 catch하는지 검사 → try/catch 하여 해결
  • 실행 예외(Runtime Exception) -> Unchecked Exception
    • 컴파일 시점에서 예외을 catch하는지 검사 X
    • 예외 발생할 것인지 여부 판단 X

 

3. 종류

 

NullPointerException

  • 해당 객체가 null인 상태에서의 접근을 했을 때 발생
fun main() {
    var nullableString: String? = null

    // 아래 줄에서 nullpointer 예외 발생 가능성 있음
    val length: Int = nullableString.length // 에러 발생!

    println("문자열의 길이: $length")
}

 

 

ArrayIndexOutOfBoundsException

  • 배열에서 할당된 배열의 인덱스 범위 초과할 경우 발생

 

NumberFormatException

  • 문자열로 되어있는 데이터를 숫자로 변경하는 경우 발생

 

ClassCastException

  • 부모 클래스를 하위 클래스로 변환하면 오류
  • 객체를 부모 클래스로 형변환하려 할 때 실제 객체가 그 부모 클래스의 하위 클래스가 아니라면 발생
fun main() {
    val parent: Any = "Hello, World!"

    // 실제로 parent는 String 타입이지만 Any 타입으로 선언되어 있음
    // 이 경우 String으로 형변환이 실패하고 ClassCastException이 발생함
    val child: String = parent as String

    println("문자열 값: $child")
}

 

 

 

'OOP' 카테고리의 다른 글

디자인 패턴  (0) 2023.08.25
OOP 정리  (0) 2023.08.25
Private  (0) 2023.08.25
업 캐스팅, 다운 캐스팅  (0) 2023.08.11
객체 지향 프로그램 (OOP)  (1) 2023.08.07