[ruby] Ruby에서 fail 키워드는 무엇을합니까?

루비를 배우면서 fail키워드를 만났습니다 . 무슨 뜻이에요?

if password.length < 8
   fail "Password too short"
end
unless  username
   fail "No user name set"
end



답변

루비에서 fail와 동의어이다 raise. fail키워드는 방법이다 Kernel클래스가 포함되는 모듈 Object. 이 fail메서드는 raise키워드 와 마찬가지로 런타임 오류를 발생시킵니다 .

fail메서드에는 세 가지 오버로드가 있습니다.

  • fail: RuntimeError오류 메시지없이 a 를 발생시킵니다.

  • fail(string): RuntimeError오류 메시지로 문자열 인수를 사용하여 a를 발생시킵니다.

    fail "Failed to open file"
    
  • fail(exception [, string [, array]]): exception선택적 오류 메시지 (두 번째 인수)와 콜백 정보 (세 번째 인수)를 사용하여 클래스 (첫 번째 인수) 의 예외를 발생시킵니다.

    예 : 잘못된 인수가 주어지면 실패해야하는 함수를 정의했다고 가정합니다. ArgumentErrora가 아닌 a 를 올리는 것이 좋습니다 RuntimeError.

    fail ArgumentError, "Illegal String"
    

    또 다른 예 : 전체 역 추적fail메서드에 전달 하여 rescue블록 내부의 추적에 액세스 할 수 있습니다 .

    fail ArgumentError, "Illegal String", caller
    

    caller역 추적을 형식의 문자열 배열로 반환하는 커널 메서드입니다 file:line: in 'method'.

인수가 없으면 $!에서 예외가 발생합니다. 또는 $! 인 경우 RuntimeError를 발생시킵니다. 0입니다. 단일 String 인수를 사용하여 문자열을 메시지로 사용하여 RuntimeError를 발생시킵니다. 그렇지 않으면 첫 번째 매개 변수는 Exception 클래스 (또는 예외 메시지를 보낼 때 Exception 개체를 반환하는 개체)의 이름이어야합니다. 선택적 두 번째 매개 변수는 예외와 관련된 메시지를 설정하고 세 번째 매개 변수는 콜백 정보의 배열입니다. begin … end 블록의 구조 절에서 예외가 포착됩니다.

Source : Ruby Documentation on the Kernel Module .


답변

Rubocop 은 두 단어의 사용법에 대해 말합니다.

‘ 예외 신호 fail대신 사용하십시오 raise.’

‘ 예외를 다시 던지는 raise대신 사용하십시오 fail.’

여기에 예가 있습니다.

def sample
  fail 'something wrong' unless success?
rescue => e
  logger.error e
  raise
end


답변

fail == raise

즉, 오류 발생 방법 fail의 인기있는 별칭 일뿐 raise입니다. 용법:

fail ArgumentError, "Don't argue with me!"


답변

www.ruby-doc.org 는 당신의 친구입니다. 내가 검색했을 때 rubydoc failKernel “이 첫 번째 히트작이었습니다. 저의 조언은 의심 스러우면 이와 같은 정의에 대한 확실한 소스로 가라는 것입니다.


답변