try catch finally 구문
try-catch
는 문법적으로 완전히 동일함- try-catch도 하나의
표현식(expression)
이다. str.*toInt*()
:기본타입 형변환 - 내부적으로는 parseInt 호출
fun parseIntOrThrow(str :String) : Int{
try{
return str.toInt()
}catch(e: NumberFormatException){
throw IllegalArgumentException("주어진 ${str}는 숫자가 아닙니다.")
}
}
fun parseIntOrThrow2(str :String) : Int?{ // 하나의 표현식 처럼 처리
return try{
str.toInt()
}catch(e: NumberFormatException){
null
}
}
checked Exception / Unchecked Exception
- Kotlin에서는
Check Exception
과Unchecked Exception
을 구분하지 않고 모두 Unchecked Exception 으로 간주함 - Java에서는 메서드 시그니처에 Checked Exception을 명시 해줘야함
IOException
: checked ExceptionNullPointException
: Unchecked Exception
fun readFile(){ // checked Exception 명시가 없다.
val currentFile = File(".")
val file = File(currentFile.absolutePath + "/a.txt")
val reader = BufferedReader(FileReader(file))
println(reader.readLine())
reader.close()
}
try with resources
try with resources
JDK7에서 추가된 문법으로 try 구문 인자로 괄호 안에 외부 자원을 만들어 주고 Try 가 끝나면 자원을 해제해줌- 코틀린에는 try with resources 문법이 없고
use
확장함수로 대체하여 사용할 수 있다.
public inline fun <T : Closeable?, R> T.use(block: (T) -> R): R { }
/* Kotlin */
fun readFile(path: String){
BufferedReader(FileReader(path)).use { reader ->
println(reader.readLine())
}
}
/* Java */
public static void readFile(String path) throws IOException {
try (BufferedReader reader = new BufferedReader(new FileReader(path))) {
System.out.println(reader.readLine());
}
Reference
'Program > Kotlin' 카테고리의 다른 글
[Kotlin] 8. 함수 (선언 방법, default parameter, named parameter, vararg) (1) | 2022.10.04 |
---|---|
[Kotlin] 6. 반복문 (for, foreach, while, Progression, Range) (0) | 2022.09.13 |
[Kotlin] 5. 조건문(if, switch, when) (0) | 2022.09.13 |
[Kotlin] 4. 연산자 (단항연산자, 산술연산자, 비교연산자, 논리연산자, 동등성, 동일성, 연산자 오버로딩) (0) | 2022.09.13 |
[Kotlin] 3. Type (기본타입, 타입캐스팅, Any, Unit,Nothing, trimIndent) (1) | 2022.09.11 |