hyeals study
코틀린 기초(11) - 예외 처리 본문
[예외 처리]
: 코틀린에서 예외 처리는 자바와 비슷함. 오류가 발생하면 예외를 던질 수(throw) 있음.
☞ 예외를 받은 쪽에서 발생한 예외를 처리(catch)하지 않으면 함수 호출 스택을 거슬러서 예외 처리하는 부분이 나올 때 까지 계속해서 예외를 던짐(rethrow)
예외 처리를 하는 방법은 다음과 같음
코틀린의 다른 클래스들과 마찬가지로 예외 인스턴스를 생성할 때도 new를 붙일 필요가 없음.
* 코틀린에서 throw는 식임.
☞ 따라서 다른 식에 포함 될 수 있음
이는 아래의 예시를 통해 확인 할 수 있음
- 위 코드에서 if 조건이 참이 되면 percentage 변수가 number 값으로 초기화 됨.
- if 조건이 것이 되면 변수가 초기화 되지 않음
[try, catch, finally]
: 코틀린에서도 자바와 마찬가지로 예외를 처리하기 위해 try, catch, finally 절을 사용함.
아래의 코드는 파일에서 각 줄을 읽어 변환해 주는 기능을 하는 코드임. 하지만 이 때 올바른 형태가 아니면 null을 반환함.
- 위의 코드에서 자바와의 가장 큰 차이는 throws를 하지 않는다는 것임. (자바에서는 함수를 작성할 때 함수 선언 뒤에 throws IOException을 명시적으로 붙여야하지만 코틀린은 이를 하지 않아도 됨.)
- try, catch, finally는 자바와 똑같이 작동함.
[try를 식으로 사용]
: 코틀린의 try 키워드는 if나 when과 같은 식임
☞ 따라서 변수에 try의 값을 대입할 수 있음. 다만, if와 달리 try의 본문은 반드시 중괄호로 둘러싸야 함.
☞ 또한 다른 문장과 마찬가지로 try에서도 내부에 여러 문장이 있으면 마지막 문장이 그 식의 값임.
아래의 코드는 파일에서 읽은 수를 출력하는 코드임
- 위의 코드에서 예외가 발생하면 catch 블록의 return 문이 실행되기 때문에 catch블록 이후의 코드는 실행되지 않음
* 예외가 발생해도 계속 진행하고 싶다면 catch 블록 안에 값을 만들면 됨.
☞ catch 블록도 내부에 있는 마지막 문장이 블록 전체의 값이 됨.
아래의 코드가 catch 블록 안에 값을 만든 경우임.
- 위의 코드에서 예외가 발생하지 않으면: Integer.parseInt(reader.readLine())값 사용
- 예외가 발생하면: null 값 사용해서 println 실행
본 게시물은 "Kotlin IN ACTION"을 참고함.
'코틀린' 카테고리의 다른 글
[코틀린] 함수를 호출하기 쉽게 만들기 (0) | 2020.02.05 |
---|---|
[코틀린] 컬렉션(Collection) 만들기 (0) | 2020.02.05 |
코틀린 기초(10) - 이터레이션: while & for (0) | 2020.02.04 |
코틀린 기초(9) - 분기에서 블록 사용 (0) | 2020.02.04 |
코틀린 기초(8) - 스마트캐스트 & if를 when으로 (0) | 2020.02.04 |