새소식

반응형
250x250
My Study/Kotlin

Study About Kotlin 4

  • -
728x90
반응형

Kotlin의 예외 처리

 

Kotlin의 예외 처리는 Java의 예외처리와 매우 유사하다.

 

fun function1(str: String): Int {
	try {
    	return str.toInt()
    } catch (e: NumberFormatException) {
    	throw IllegalArgumentException("주어진 ${str}은 숫자가 아닙니다.")
    }
}

fun function2(str: String): Int? {
	return try {
    	str.toInt()
    } catch (e: NumberFormatException) {
    	null
    }
}

 

Java는 Unchecked Exception이 있으면 예외 처리를 해야한다는 표시로 빨간 줄이 뜨며

오류를 발생시킨다.

하지만 Kotlin은 그런 오류가 뜨지 않는다.

그 이유는 Kotlin에서는 Checked Exception과 Unchecked Exception을 구분하지 않고

모두 Unchecked Exception으로 처리하기 때문이다.

 

fun function3() {
    val currentFile = File(".")
    val file = File(currentFile.absolutePath + "./a.txt")
    val reader = BufferedReader(FileReader(file))
    println(reader.readLine())
    reader.close()
}

 

Kotlin의 try with resources 구문

 

Java는 try with resources구문을 사용한다.

try (BufferedReader reader = new BufferedReader(new FileReader(path))) {}

 

하지만 Kotlin은 try with resources 구문이 존재하지 않고 use 함수를 사용한다.

 

fun function4(path: String) {
	BufferedReader(FileReader(path)).use {reader ->
    	println(reader.readLine())
    }
}

 

 

Kotlin에서의 함수

1.  Kotlin에서의 함수 선언 문법

 

Kotlin에서는 함수의 block {} 대신 = 을 사용할 수 있고 = 을 사용하면 return을 제거해야 한다.

= 을 사용하면 반환 타입을 명시적으로 작성하지 않아도 되지만 

block {} 을 사용하면 Unit이 아닌 이상 반환타입을 명시적으로 작성해줘야 한다.

fun max1(a: Int, b: Int): Int {
	return if(a > b) {
    	a
    } else {
    	b
    }
}

fun max2(a: Int, b: Int) = if(a > B) a else b

 

2. default parameter

Kotlin에서는 default parameter를 사용할 수 있다.

default parameter란 parameter에 기본값을 설정하는 것

 

3. named argument (parameter)

Kotiln에서는 함수 호출 시 argument를 명시해줄 수도 있다.

 

named argument를 사용하면 builder를 직접 만들지 않고 builder의 장점을 가질 수 있다는 장점이 있다.

하지만 Java 함수를 가져다 사용할 때에는 named argument를 사용할 수 없다.

fun repeat1(str: String, num: Int, useNewLine: Boolean) {
	for(i in 1..num) {
    	if(useNewLine) {
        	println(str)
        } else {
        	print(str)
        }
    }
} 

// 위와 같은 함수는 repeat1("test") 로 동작하지 않음

fun repeat2(str: String, num: Int = 3, useNewLine: Boolean = true) {
	for(i in 1..num) {
    	if(useNewLine) {
        	println(str)
        } else {
        	print(str)
        }
    }
}

// 위 함수는 repeat2("test") 로 동작 가능

// named argument

fun main() {
	repeat2("Hello World", useNewLine = false)
}

// 위와 같이 사용할 수 있는데 num은 기본값인 3이, useNewLine은 false로 넣을 수 있다.

 

4. 같은 타입의 여러 parameter 받기 (가변인자)

Java는 가변인자를 받을 때 String... 의 방식으로 사용했지만 

Kotlin은 가변인자를 받을 때 vararg를 사용한다.

 

또한 배열을 가변인자로 받기 위해서는 배열 앞 *를 붙여줘야 한다.

* 는 spread 연산자로 , 로 구분되는 것을 펼쳐주는 연산자이다.

fun printAll(vararg strings: String) {
	for(str in strings) {
    	println(str)
    }
}
728x90
반응형

'My Study > Kotlin' 카테고리의 다른 글

Study About Kotlin 6  (0) 2024.03.09
Study About Kotlin 5  (0) 2024.02.28
Study About Kotlin 3  (0) 2024.02.28
Study About Kotlin 2  (0) 2024.02.28
Study About Kotlin 1  (0) 2024.02.21
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.