Skip to content

ch3 p. 154~5 Option타입을 for를 이용해 뽑아내는 것 및 NonFatal 질문 #5

@not-for-me

Description

@not-for-me

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

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions