왜 `rescue Exception => e` 하면 안될까요?
조회수 2098회
발생하는 문제 및 실행환경
왜 rescue Exception => e
하면 안될까요?
서버를 한 번 돌리면 멈추지 않고 계속 돌아가게 하고 싶은데 찾아보니까 자료에 설명도 없이
Don’t rescue Exception. EVER. or I will stab you.
라고 되어있었습니다. 따로 설명이 안적혀 있어서 그런데 왜 rescue Exception => e
하면 안되는지, 그럼 제 문제는 어떻게 해결해야 할지 알려주세요
1 답변
-
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
둘 중에 아무거나 갖다 쓰셔도 됩니다.
댓글 입력