코틀린에서의 예외 처리 특징
- 체크 예외 와 언체크 예외 구분이 없다고 함
- 모든 예외가 언체크 예외로 처리됨..
- 예외를 명시적으로 선언하거나 잡을 필요가 없다고 한다.
- 예외 처리의 방식
- try 블록에서 예외가 발생할 수 있는 코드를 작성하고,
catch
블록에서 예외를 잡아서 처리한다.
finally
블록에서 정리 코드 수행
요 부분은 자바랑 동일하다.
- try 블록에서 예외가 발생할 수 있는 코드를 작성하고,
그런데 왜 코틀린에서 언체크 예외의 구분이 없을 수 있는 것일까?
- 결론은 단순했다.
- 개발자가 더 명확하고 간결한 코드를 작성하도록 돕는 것이 철학이다
일단 체크 예외의 문제점이 존재한다.
1 .만약 함수가 새로운 예외를 던지는 경우
- 해당 함수를 호출하는 모든 메서드가 예외를 처리해야하는 막대한 짐을 등에 얹게 된다.
- 과도한 예외 처리 케이스
- 개발자들이 예외를 try-catch 로 적절하게 처리해야하지만,
- 그냥 throws 해버리거나 무시하는 케이스가 상당히 많았음.
- 그리고 에러처리를 본래 의도와 다르게 사용하는 경우도 있었습니다.
이러한 문제점 때문에,
- 코틀린에서는 체크예외를 발생시키지 않는 것으로 언어의 철학을 설정한 것 같습니다.
try 사용법
fun readNumber(reader: BufferedReader): Int?{
return try {
val line = reader.readLine()
println("line = $line");
Integer.parseInt(line)
} catch (e: NumberFormatException) {
null // 예외가 발생하는 경우 null 을 반환한다.
} finally {
reader.close()
}
}
fun main() {
readNumber(BufferedReader(InputStreamReader(System.`in`)))
}
12l3j12j3l
line = 12l3j12j3l
- 콘솔에서 데이터를 읽어서 출력하는 형태
- try 식은
- 마지막 식의 결과를 반환합니다.
- 예외 처리로 발생한 결과를 return 을 통해 바로 반환이 가능합니다.
- try 식은
Uploaded by N2T
'코틀린 > 코틀린인액션' 카테고리의 다른 글
[코틀린인액션] 가변 인자 함수 , 중위 호출 , MapOf (0) | 2023.11.29 |
---|---|
[코틀린인액션] 문자열 등 (0) | 2023.11.29 |
[코틀린인액션] 코틀린에서 컬렉션 만들기 (0) | 2023.11.29 |
[코틀린인액션] 코틀린에서의 디폴트 파라미터 자바에서도 사용해보기 (0) | 2023.11.29 |
[코틀린인액션] 확장함수 (0) | 2023.11.29 |