이전에 배운 require, check, assert 함수의 경우 넣어준 값이 참이 아니면 IllegalArgumentException이나 IllegalStateException, AssertionError 같은 예외들을 throw 해줍니다. 또한 코틀린에서는 사용자정의 Exception을 만들어 이러한 Exception들을 throw 해줄 수 있습니다. 그렇지만 이 책에서는 사용자정의 Exception을 만들어 사용하는 행동보다는 표준라이브러리의 예외들을 사용하기를 권하고 있습니다. 그 이유들로는 협업하는 팀원들이나 다른 사람들이 보더라도 표준라이브러리 예외들로 더 잘 이해할 수 있게 될 것입니다. 그런 김에 추가로 코틀린에서 자주보이는 예외들을 봐볼까 합니다.
llegalArgumentException, IllegalStateException : 이전 장에서 보았듯이 require나 check 블록을 통하여 얻을수 예외입니다. 각각 매개변수의 값이 나 해당클래스 프로퍼티의 상태 등이 부적절할 때 생길 수 있습니다.
IndexOutOfBounds : 배열이나 리스트 등의 인덱스 범위를 벗어난 접근이 시도될 때 발생하는 예외입니다.
ConcurrentModificationException : 컬렉션을 수정하면서 동시에 해당 컬렉션을 반복하려고 할 때 발생하는 예외입니다.
NoSuchElementException : 컬렉션에서 요소를 가져오려고 할 때 해당 요소가 없는 경우 발생하는 예외입니다.
UnsupportedOperationException : 지원되지 않는 연산을 시도할 때 발생하는 예외입니다.
NullPointerException : 가장 흔하게 발생하는 예외 중 하나로, null 값을 참조할 때 발생합니다.
ArithmeticException : 산술 연산 중에 발생하는 예외로, 0으로 나누기 등이 일반적인 원인입니다.
NumberFormatException : 숫자를 파싱 할 때 문자열이 숫자로 변환될 수 없는 경우 발생하는 예외입니다.
ClassCastException : 잘못된 형변환이 시도될 때 발생하는 예외입니다.
UnsupportedClassVersionError : 클래스 파일의 버전이 현재 JVM에서 지원하지 않을 때 발생하는 예외입니다.
FileNotFoundException : 파일을 찾을 수 없을 때 발생하는 예외입니다.
IOException : 입출력 작업 중에 발생하는 예외로, 파일 또는 네트워크와 관련된 작업에서 사용됩니다.
InterruptedException : Thread의 sleep()이나 wait()과 같은 메서드를 호출하는 동안 인터럽트가 발생했을 때 발생하는 예외입니다.
StackOverflowError : 재귀 함수 등으로 인해 스택이 오버플로우 될 때 발생하는 예외입니다.
OutOfMemoryError : 메모리 부족으로 인해 객체를 생성하거나 할당할 수 없을 때 발생하는 예외입니다.
NoSuchMethodError : 클래스의 메서드가 호출되지 않을 때 발생하는 예외입니다.
NoClassDefFoundError : 클래스를 찾을 수 없을 때 발생하는 예외입니다.
이처럼 코틀린에는 다양한 상황에서 생길 수 있는 예외가 있습니다. 각각의 예외에 대해 적절하게 예외 처리를 수행하여 안정성을 높인 프로그래밍을 할 수 있을 것입니다.
'코틀린 > Effective Kotlin' 카테고리의 다른 글
[Effective Kotlin] 8. 안정성 - 적절하게 null을 처리하라 (0) | 2023.07.28 |
---|---|
[Effective Kotlin] 7. 안정성 - 결과 부족이 발생할 경우 null과 Failure를 사용하라 (0) | 2023.07.24 |
[Effective Kotlin] 5. 안정성 - 예외를 활용해 코드에 제한을 걸어라 (0) | 2023.07.19 |
[Effective Kotlin] 4. 안정성 - inferred 타입으로 리턴하지 말라 (0) | 2023.07.17 |
[Effective Kotlin] 3. 안정성 - 최대한 플랫폼 타입을 사용하지 말라 (0) | 2023.07.14 |