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


발생하는 문제 및 실행환경

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

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

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

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

  • 2016년 02월 23일에 작성됨

조회수 162


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

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

  • 2016년 02월 23일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close