관리 메뉴

hyeals study

코틀린 기초(11) - 예외 처리 본문

코틀린

코틀린 기초(11) - 예외 처리

hyeals 2020. 2. 4. 22:44

[예외 처리]

 

: 코틀린에서 예외 처리는 자바와 비슷함. 오류가 발생하면 예외를 던질 수(throw) 있음.

☞ 예외를 받은 쪽에서 발생한 예외를 처리(catch)하지 않으면 함수 호출 스택을 거슬러서 예외 처리하는 부분이 나올 때 까지 계속해서 예외를 던짐(rethrow)

 

예외 처리를 하는 방법은 다음과 같음

 

예외 처리 예시

코틀린의 다른 클래스들과 마찬가지로 예외 인스턴스를 생성할 때도 new를 붙일 필요가 없음.

 

* 코틀린에서 throw는 식임.

☞ 따라서 다른 식에 포함 될 수 있음

 

이는 아래의 예시를 통해 확인 할 수 있음

 

예외 처리 예시 (2)

  • 위 코드에서 if 조건이 참이 되면 percentage 변수가 number 값으로 초기화 됨.
  • if 조건이 것이 되면 변수가 초기화 되지 않음

[try, catch, finally]

 

: 코틀린에서도 자바와 마찬가지로 예외를 처리하기 위해 try, catch, finally 절을 사용함.

 

아래의 코드는 파일에서 각 줄을 읽어 변환해 주는 기능을 하는 코드임. 하지만 이 때 올바른 형태가 아니면 null을 반환함.

 

try 사용 예시

  • 위의 코드에서 자바와의 가장 큰 차이는 throws를 하지 않는다는 것임. (자바에서는 함수를 작성할 때 함수 선언 뒤에 throws IOException을 명시적으로 붙여야하지만 코틀린은 이를 하지 않아도 됨.)
  • try, catch, finally는 자바와 똑같이 작동함.

[try를 식으로 사용]

 

: 코틀린의 try 키워드는 if나 when과 같은 식임

☞ 따라서 변수에 try의 값을 대입할 수 있음. 다만, if와 달리 try의 본문은 반드시 중괄호로 둘러싸야 함.

☞ 또한 다른 문장과 마찬가지로 try에서도 내부에 여러 문장이 있으면 마지막 문장이 그 식의 값임.

 

아래의 코드는 파일에서 읽은 수를 출력하는 코드임

 

try를 식으로 사용한 예제

  • 위의 코드에서 예외가 발생하면 catch 블록의 return 문이 실행되기 때문에 catch블록 이후의 코드는 실행되지 않음

* 예외가 발생해도 계속 진행하고 싶다면 catch 블록 안에 값을 만들면 됨

☞ catch 블록도 내부에 있는 마지막 문장이 블록 전체의 값이 됨.

 

아래의 코드가 catch 블록 안에 값을 만든 경우임.

 

try, catch를 이용해서 값 반환 예시

  • 위의 코드에서 예외가 발생하지 않으면: Integer.parseInt(reader.readLine())값 사용
  • 예외가 발생하면: null 값 사용해서 println 실행

 

 

본 게시물은 "Kotlin IN ACTION"을 참고함.

Comments