예외란?
- 예상하지 못한 상황에서 발생하는 오류
- 프로그램이 정상적으로 진행되지 못하는 상태
- 이를 처리하지 않으면 예상치 못한 종료로 이어질 수 있음
예외가 발생하는 경우
- 입력 데이터 유효성 검사 오류 처리:
- 클라이언트로부터의 잘못된 요청 또는 부적절한 입력이 발생할 경우 ValidationException을 통해 클라이언트에게 유효성 오류를 전송
- 일반적인 서버 오류 처리:
- 예상치 못한 서버 내부 오류에 대비하여 InternalServerException을 처리하여 로깅하고 사용자에게 적절한 오류 메시지를 제공
- 데이터베이스 연결 오류 처리:
- 데이터베이스 연결이 실패하면 DatabaseConnectionException을 처리하여 적절한 에러 메시지를 로깅하거나 사용자에게 알림
- 인증 및 권한 오류 처리:
- 사용자의 인증이 실패하거나 권한이 부족한 경우 AuthenticationException 또는 AuthorizationException을 처리하여 적절한 응답을 생성
- 외부 서비스 호출 오류 처리:
- 외부 API 호출 중 오류가 발생하면 ExternalServiceException을 처리하여 로깅하거나 다른 대체 동작을 수행
예외를 다루는 방법
try-catch 사용
- try문에 예외가 발생할 수 있는 코드를 작성
- catch문에 예외가 발생했을 때 수행할 동작을 작성
fun main() {
val userInput = "abc"
val result = safeIntegerConversion(userInput)
println(result)
}
fun safeIntegerConversion(str: String): Int {
return try {
str.toInt()
} catch (e: NumberFormatException) {
println("Error: ${e.message}")
0
}
}
finally 도 같이 사용
- 예외 발생 여부에 관계없이 항상 실행해야 하는 동작을 작성
fun main() {
performFileOperations()
}
fun performFileOperations() {
val file = File("example.txt")
try {
// 파일 관련 작업 수행
println("File operations performed.")
} finally {
// 항상 실행되는 블록
file.close()
println("File closed.")
}
}
흐름 제어를 위해서도 사용할 수 있다
- throw 키워드를 사용해 명시적으로 예외를 발생시킬 수 있다
fun main() {
try {
validateInput("")
} catch (e: IllegalArgumentException) {
println("Caught an exception: ${e.message}")
}
}
fun validateInput(input: String) {
if (input.isBlank()) {
throw IllegalArgumentException("Input should not be blank.")
}
println("Input is valid: $input")
}
'나중에도 봐야겠지?' 카테고리의 다른 글
2024.05.07 (화) Spring (1) | 2024.05.07 |
---|---|
2024.04.23 (화) 코틀린 상속 open, abstract class (0) | 2024.04.23 |
2024.04.19 (금) 코틀린 While (1) | 2024.04.19 |
2024.04.18 (목) 코틀린 Boolean (0) | 2024.04.18 |
2024.04.15 (월) Git & Github (0) | 2024.04.15 |