-
Notifications
You must be signed in to change notification settings - Fork 7
Open
Description
154페이지 예제소스인 TryCatch.scala를 요약하면 대략 아래와 같은데요.
// ...
var source: Option[Source] = None
try {
source = Some(Souce.fromFile(fileName))
// ...
} catch {
case NonFatal(ex) => println(s"Non fatal exception! $ex")
} finally {
for (s <- source) {
// ...
}
// ...
155페이지의 소스 설명을 보면 Option
타입인 source
변수에서 Source를 꺼내기 위해서 for 내장을 사용했다고 설명이 되었습니다.
여기서 질문은 기존 언어의 for는 반복을 위해서 사용하는데 스칼라에서는 위의 용례와 같이 반복을 위한 것이 아니라
source가 하나의 값임에도 for를 사용해서 Option 내부의 값이 Some이면 값을 꺼내서 뒤의 {...}블록을 실행하고, None이면 지나가도록 사용하는 것이 권장하는 방식인가요?
두 번째 질문은 catch 블록 안의 NonFatal은 매뉴얼에 설명 처럼 VirtualMachineError, ThreadDeath, LinkageError, InterruptedException, ControlThrowable과 같은 미리 정의된 에러나 예외를 제외한 모든 예외를 매칭하는 것인지 궁금합니다. ^^
Metadata
Metadata
Assignees
Labels
No labels