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
선택적 오류 메시지 (두 번째 인수) 및 콜백 정보 (세 번째 인수)를 사용하여 클래스 (첫 번째 인수) 의 예외를 발생시킵니다.예 : 잘못된 인수가 주어지면 실패해야하는 함수를 정의했다고 가정합니다.
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 블록의 구조 절에서 예외가 포착됩니다.
출처 : 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 "이 첫 번째 히트작이었습니다. 저의 조언은 의심 스러우면 이와 같은 정의에 대한 확실한 소스로 가라는 것입니다.
참고 URL : https://stackoverflow.com/questions/18811675/what-does-the-fail-keyword-do-in-ruby
'programing tip' 카테고리의 다른 글
빌드 오류 : "다른 프로세스에서 사용 중이므로 프로세스가 파일에 액세스 할 수 없습니다." (0) | 2020.10.07 |
---|---|
프로그래밍 방식으로 Android 기기의 MAC 가져 오기 (0) | 2020.10.07 |
jQuery UI Resizable을 사용하여 가로 또는 세로로만 크기를 조정하는 방법은 무엇입니까? (0) | 2020.10.07 |
템플릿 클래스의 단일 메서드에 대한 템플릿 전문화 (0) | 2020.10.06 |
HTML5의 GeoLocation은 정확히 어떻게 작동합니까? (0) | 2020.10.06 |