일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 스칼라 강좌
- 엔터프라이즈 블록체인
- CORDA
- 파이썬 데이터분석
- 플레이프레임워크
- 스칼라
- 하이브리드앱
- 파이썬 머신러닝
- 하이퍼레저 패브릭
- hyperledger fabric
- akka 강좌
- Actor
- Adapter 패턴
- 스위프트
- 이더리움
- Akka
- 블록체인
- Play2
- play2 강좌
- play 강좌
- Play2 로 웹 개발
- 안드로이드 웹뷰
- 그라파나
- 파이썬
- 파이썬 동시성
- 스칼라 동시성
- 주키퍼
- Golang
- Hyperledger fabric gossip protocol
- 파이썬 강좌
- Today
- Total
HAMA 블로그
스칼라 강좌 (41) Try 예외처리 본문
Try
값이 util.Try 클렉션은 에러 처리를 컬렉션 관리로 바꾸어 놓는다. 이 클렉션은 주어진 함수 매개변수에서 발생한 에러를 잡아내는 메커니즘을 제공하여 함수가 성공적으로 실행된 경우에는 함수의 결과값을 그렇지 않은 경우에는 에러를 반환한다.
추가 설명은 아래 링크를 참고하세요.
http://blog.seulgi.kim/2015/07/monad-try.html
Try 를 이용한 에러 처리 메소드
이름 |
예제 |
설명 |
flatMap |
nextError flatMap { _ => |
Success인 경우 util.Try를 반환하는 함수를 호출함으로써 현재의 반환값을 새로운 내장된 반환값(또는 예외에 매핀함, 우리의 'nextError' 데모함수는 입력값을 취하지 않기 때문에 우리는 현재 Success로 부터 사용하지 않는 입력값을 나타내는 언더스코어를 사용함 |
foreach |
nextError foreach(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; |
Success를 ('x'에 저장된) 반환값으로 또는 Failure를 ('error'에 저장된) 예외로 처리하기 위해 매치 표현식을 사용함. |
아무일도 |
nextError |
가장 쉬운 에러 처리 방식으로, 내가 개인적으로 선호하는 방식임. 이 방식으로 단순히 예외가 잡히거나,현재의 애플리케이션을 종료시킬 때까지 호출 스택을 타고 전파되도록 그대로 둠. 이 방식은 민감한 경우에 사용하면 문제가 크겠짐나, 발새한 예왼느 결코 무시되지 않음 |
*러닝스칼라(제이슨스와츠) 에서 발췌
레퍼런스:
러닝 스칼라
프로그래밍 인 스칼라
'Scala' 카테고리의 다른 글
스칼라 강의 (43) - 고급 타입관련 주제들 (0) | 2017.03.26 |
---|---|
스칼라 강좌 (42) 고급 타입 다루기 - F-bounded polymorphism / recursive types (0) | 2017.03.26 |
스칼라 강좌 (40) 동시성을 위한 Promise 와 Await (0) | 2017.02.21 |
스칼라 강좌 (39) 동시성을 위한 Observable (0) | 2017.02.21 |
스칼라 강좌 (38) 동시성을 위한 Collections (0) | 2017.02.21 |