왜 `rescue Exception => e` 하면 안될까요?

조회수 2097회

발생하는 문제 및 실행환경

rescue Exception => e 하면 안될까요?

서버를 한 번 돌리면 멈추지 않고 계속 돌아가게 하고 싶은데 찾아보니까 자료에 설명도 없이

Don’t rescue Exception. EVER. or I will stab you.

라고 되어있었습니다. 따로 설명이 안적혀 있어서 그런데 왜 rescue Exception => e하면 안되는지, 그럼 제 문제는 어떻게 해결해야 할지 알려주세요

1 답변

  • 좋아요

    0

    싫어요
    채택 취소하기

    Exception은 ruby의 exception 구조의 root이기 때문에 rescue Exception는 모든 exception을 rescue합니다.

    여기서 rescue되는 대상은 유저의 ctrl+c부터

    SyntaxError, LoadError, Interrupt까지도 포함되 있습니다.

    서버를 원할 때 멈추고 싶다고 하셨는데 이렇게 되면 사실 멈출수 없어지지요.


    아마 logging을 하려고 질문하신 것 같은데 그럼 rescue StandardError를 쓰면 됩니다.

    begin
      # iceberg!
    rescue => e
      # lifeboats
    end
    
    begin
      # iceberg!
    rescue StandardError => e
      # lifeboats
    end
    

    둘 중에 아무거나 갖다 쓰셔도 됩니다.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)