관리 메뉴

HAMA 블로그

스칼라 강좌 (41) Try 예외처리 본문

Scala

스칼라 강좌 (41) Try 예외처리

[하마] 이승현 (wowlsh93@gmail.com) 2017. 2. 27. 13:48



Try

값이 util.Try 클렉션은 에러 처리를 컬렉션 관리로 바꾸어 놓는다. 이 클렉션은 주어진 함수 매개변수에서 발생한 에러를 잡아내는 메커니즘을 제공하여 함수가 성공적으로 실행된 경우에는 함수의 결과값을 그렇지 않은 경우에는 에러를 반환한다.

추가 설명은 아래 링크를 참고하세요.  

http://blog.seulgi.kim/2015/07/monad-try.html



Try 를 이용한 에러 처리 메소드 

 이름

예제 

설명 

 flatMap 

 nextError flatMap { _ =>
   nextError }

Success인 경우 util.Try를 반환하는 함수를 호출함으로써 현재의 반환값을 새로운 내장된 반환값(또는 예외에 매핀함, 우리의 'nextError' 데모함수는 입력값을 취하지 않기 때문에 우리는 현재 Success로 부터 사용하지 않는 입력값을 나타내는 언더스코어를 사용함

 foreach

 nextError foreach(x =>
            println("success!" + x))

Success인 경우 주어진 함수를 한 번 실행하고, Failure 일 때는 실행하지 않음

 getOrElse

 nextError getOrElse 0 

Success에 내장된 값을 반환하거나,Failure인 경우 이름에 의한 매개변수의 결과를 반환함. 

 orElse

 nextError orElse nextError 

flatMap의 반대되는 메소드, Failure인 경우 그 역시Try를 반환하는 함수를 호출함.orElse로 어쩌면 Failure를 Success로 전환 할 수 있음 

 toOption 

 nextError.toOption 

 Try를 Option으로 전환하여 Success는 Some으로 Failure는 None이 됨. 내장된 Exception을 잃게 된다는 단점이 있음 

 map 

 nextError map (_ * 2)  

Success인 경우 새로운 값에 내장된 값을 매핑하는 함수를 호출함 

 매치표현식 

 nextError match { case util.Success(x) => x;
         case util.Failure(error) => -1 } 

Success를 ('x'에 저장된) 반환값으로 또는 Failure를 ('error'에 저장된) 예외로 처리하기 위해 매치 표현식을 사용함.  

 아무일도
 하지않음

 nextError 

가장 쉬운 에러 처리 방식으로, 내가 개인적으로 선호하는 방식임. 이 방식으로 단순히 예외가 잡히거나,현재의 애플리케이션을 종료시킬 때까지 호출 스택을 타고 전파되도록 그대로 둠. 이 방식은 민감한 경우에 사용하면 문제가 크겠짐나, 발새한 예왼느 결코 무시되지 않음  

*러닝스칼라(제이슨스와츠) 에서 발췌




레퍼런스:

러닝 스칼라 
프로그래밍 인 스칼라 

Comments