[Kotlin] 예외처리

neoneoneo·2024년 3월 11일
0

kotlin

목록 보기
28/49
post-custom-banner

예외처리란?

  • 개발 중에 프로그램을 실행하다보면 차마 설계해놓지 못했던 케이스를 마주하여 에러가 발생하는 경우가 종종 있다. 이럴 때 예외처리를 통해 실행 도중에 발생하는 예외를 적절하게 처리할 수 있다.
  • 물론 이 짓을 한다고 해도.. 모든 케이스에 대항할 수 있는 것은 아니지만, 예외처리를 잘 해두면 실행 도중에 발생하는 런타임 에어가 무엇인지 빠르게 판단하고 대응할 수 있고, 무엇보다 비정상적으로 프로그램이 종료되지 않고 사용자에게 에러가 발생했습니다 와 같은 메세지를 띄운 후 다시 작동할 수 있게 만들 수도 있다!

예외처리, 언제 필요한가?

  • 숫자랑 연산자만 입력할 수 있는 계산기 프로그램을 만들었는데 사용자가 자기 이름을 입력해버렸을 때
  • 온라인에서 다른 사용자와 1:1 대결 게임 중인데 인터넷 연결이 끊겼을 때
  • USB 연결, GPS 사용한 후 연결을 끊어야 할 때(자원낭비 방지)

예외처리 하는 방법

try-catch / throw의 구조

fun method1() {
	try {
		예외가 발생할 가능성이 존재하는 코드
	} catch(예외종류) {
		예외가 발생했을때 처리할 코드
	}
}
  • 예외가 발생하면, try로 가지 말고 catch를 실행한다.
fun method1(num1:Int) {
	if(num1 > 10) {
		throw 예외종류
	}
}
  • 예외가 발생하면 throw하여 프로그램이 종료되지 않도록 한다.

사례로 보는 try-catch 구조 이해

	while(true) {
        try {
            var num1 = readLine()!!.toInt()
            println("내가 입력한 숫자는 ${num1}입니다")
            break
        } catch(e:java.lang.NumberFormatException) {
            println("숫자를 입력하세요")
        }
    }
  • 숫자를 입력하지 않으면 catch로 가서 프린트문을 실행하고, 다시 try로 가서 입력된 숫자가 숫자일 때까지 반복한다. 숫자가 입력되면 break되어 while문(무한반복 상태)이 종료된다.
	while(true) {
        try {
            var num1 = readLine()!!.toInt()
            println("내가 입력한 숫자는 ${num1}입니다")
            break
        } catch(e:java.lang.NumberFormatException) {
            println("숫자를 입력하세요")
        } finally {
            println("키보드와의 연결은 정상적입니다")
        }
    }
  • finally는 try, catch와 상관없이 항상 실행된다.
    • 예외가 발생했든 안했든 무조건 마지막에는 finally로 가서 키보드와의 연결이 정상이라는 메세지를 출력하게 된다.

[TIL-240311]

post-custom-banner

0개의 댓글