반응형

이런 저런 코드들을 보다가 알게된 함수들인데 어떤건지 궁금해서 알아봤다. 함수명대로 매우 직관적인 뜻의 기능이더라.

정확하게 이것들을 포괄적으로 부르는 명칭을 알아보려고 했는데 따로 존재하지 않는 것 같다.(아니면 내가 못 찾았거나) 다른 글들에서는 '예외 처리 함수', '조건 확인 함수'라고 명시해두었던데, 공식적인 명칭은 아닌 듯 하다.


require(value:Boolean) || require(value: Boolean, lazyMessage: () → Any)

전달받은 파라미터 값이 거짓일 경우 IllegalArgumentException을 발생시킨다.

lazyMessage를 전달할 경우 파라미터 값이 거짓일 때 이를 발생시킨다.

require(true)		// 
require(false)		// IllegalArgumentException 발생

require(true) { Log.d(TAG, "requireTest: true") }	// 
require(false) { Log.d(TAG, "requireTest: false") }	// "requireTest: false"

 

 

requireNotNull(value: T?) || requireNotNull(value: T?, lazyMessage: () → Any)

전달받은 파라미터 값이 Null이 아니라면 결과 값을 변수에 할당하고, Null일 경우 IllegalArgumentException을 발생시킨다.

lazyMessage를 전달할 경우 Null이라면 이를 발생시킨다.

val v = 10 - 5

val a = requireNotNull(v >= 5)
Log.d(TAG, "requireNotNullTest a : $a")		// true
val b = requireNotNull(v < 5)
Log.d(TAG, "requireNotNullTest b : $b")		// false

requireNotNull(0)	//
requireNotNull(null)	// "Required value was null."

requireNotNull(0) { "this is 0" }		//
requireNotNull(null) { "this is null" }	// "this is null"

 

 

check(value: Boolean) || check(value: Boolean, lazyMessage: () → Any )

전달받은 파리미터 값이 거짓일 경우 IllegalStateException을 발생시킨다.

lazyMessage를 전달할 경우 거짓이라면 이를 발생시킨다.

check(true)	//
check(false)	// IllegalStateException 발생

check(true) { Log.d(TAG, "checkTest: true") }	// 
check(false) { Log.d(TAG, "checkTest: false") }	// "checkTest: false"

 

 

checkNotNull(value: T?) || checkNotNull(value: T?, lazyMessage: () → Any)

전달받은 파라미터 값이 Null이라면 IllegalStateException을 발생시킨다.

lazyMessage를 전달할 경우 Null이라면 이를 발생시킨다.

checkNotNull(0)		//
checkNotNull(null)	// IllegalStateException 발생

checkNotNull(0) { Log.d(TAG, "checkNotNullTest: 0") }	// 
checkNotNull(null) { Log.d(TAG, "checkNotNullTest: null") }	// "checkNotNullTest: null"

지극히 개인적이지만, 조건과 관련된 부분들은 코드 상에서 조금 길어지더라도 확실하게 걸러내거나 적어도 어플리케이션이 죽는 경우를 없애기 위해 여러 Exception들을 발생하지 않도록 하고 있기도 하고, 코틀린에선 if문이나 let으로 비교적 편리하게 조건 관련 부분들을 처리하고 있어서 이것들이 왜 필요한지 혹은 효율적인 건지까지는 잘 모르겠다. 이 녀석들이 코틀린에만 있는게 아니고 다른 곳에서 이전부터 많이 쓰이던 건데 단순히 코틀린에서도 사용할 수 있게 해준 것일 뿐인가 싶기도하다만 알아보려해도 원하는 내용들이 나오질 않더라...

 

 

https://seosh817.tistory.com/155

 

[Kotlin] Kotlin 예외처리 - require(), requireNotNull(), check(), checkNotNull()(feat. IllegalArgumentException, IllegalState

Kotlin 예외처리 함수 require(), check() require(), requireNotNull() 함수 require() : 매개변수의 값이 참인지 체크, 거짓이라면 throw IllegalArgumentException requireNotNull() : 매개변수의 값이 null이..

seosh817.tistory.com

https://jinee0717.tistory.com/10

 

[kotlin] 코틀린을 코틀린답게 (라이브러리 - 조건 확인 함수,컬렉션 생성 함수)

4개의 글로 커니의 코틀린 2장, 3장 정리를 모두 마쳤다 오늘은 커니의 코틀린 4장 내용인, 개발을 할 때 유용하게 사용할 수 있는 코틀린 표준 라이브러리를 정리해보려고 한다! 조건 확인 함수

jinee0717.tistory.com

 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기