루비를 배우면서 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
선택적 오류 메시지 (두 번째 인수)와 콜백 정보 (세 번째 인수)를 사용하여 클래스 (첫 번째 인수) 의 예외를 발생시킵니다.예 : 잘못된 인수가 주어지면 실패해야하는 함수를 정의했다고 가정합니다.
ArgumentError
a가 아닌 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 fail
” Kernel “이 첫 번째 히트작이었습니다. 저의 조언은 의심 스러우면 이와 같은 정의에 대한 확실한 소스로 가라는 것입니다.