루비를 배우면서 fail
키워드를 만났습니다 . 무슨 뜻이에요?
if password.length < 8
fail "Password too short"
end
unless username
fail "No user name set"
end
루비를 배우면서 fail
키워드를 만났습니다 . 무슨 뜻이에요?
if password.length < 8
fail "Password too short"
end
unless username
fail "No user name set"
end
fail "Password too short" if password.length < 8
그리고fail "No user name set" unless username
답변:
루비에서 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 .
raise
fail
== raise
즉, 오류 발생 방법 fail
의 인기있는 별칭 일뿐 raise
입니다. 용법:
fail ArgumentError, "Don't argue with me!"
www.ruby-doc.org 는 당신의 친구입니다. 내가 검색했을 때 rubydoc fail
" Kernel "이 첫 번째 히트작이었습니다. 저의 조언은 의심 스러우면 이와 같은 정의에 대한 확실한 소스로 가라는 것입니다.
raise
예외를 처리fail
할 때 와 그렇지 않을 때 사용한다는 것을 아는 가치가 있습니다.