Zauważ również, że możesz je zapisać jako instrukcje fail "Password too short" if password.length < 8fail "No user name set" unless username
jednowierszowe
Odpowiedzi:
136
W Rubim failjest synonimem raise. Słowo failkluczowe to metoda Kernelmodułu zawartego w klasie Object. failMetoda budzi błąd wykonania podobnie jak raisehasła.
failMetoda ma trzy przeciążeń:
fail: wywołuje RuntimeErrorbez komunikatu o błędzie.
fail(string): podnosi a RuntimeErrorz argumentem łańcuchowym jako komunikatem o błędzie:
fail "Failed to open file"
fail(exception [, string [, array]]): zgłasza wyjątek klasy exception(pierwszy argument) z opcjonalnym komunikatem o błędzie (drugi argument) i informacją zwrotną (trzeci argument).
Przykład: Załóżmy, że definiujesz funkcję, która powinna zakończyć się niepowodzeniem, jeśli podano zły argument. Lepiej jest podnieść ArgumentErrora nie RuntimeError:
fail ArgumentError, "Illegal String"
Inny przykład: Możesz przekazać cały ślad do failmetody, aby uzyskać dostęp do śladu wewnątrz rescuebloku:
fail ArgumentError, "Illegal String", caller
callerjest metodą jądra, która zwraca ślad w postaci tablicy ciągów w postaci file:line: in 'method'.
Bez argumentów zgłasza wyjątek w $! lub podnosi RuntimeError, jeśli $! jest zero. Z pojedynczym argumentem String wywołuje RuntimeError z łańcuchem jako komunikatem. W przeciwnym razie pierwszym parametrem powinna być nazwa klasy Exception (lub obiektu, który zwraca obiekt Exception po wysłaniu komunikatu o wyjątku). Opcjonalny drugi parametr ustawia komunikat skojarzony z wyjątkiem, a trzeci parametr jest tablicą informacji zwrotnych. Wyjątki są objęte klauzulą ratunkową bloków begin ... end.
+1 za porady dotyczące stylu; nawet jeśli są one identyczne w każdym semantycznie używając ich zamierzonego ustawienia pomaga przekazać intencję lepiej
fatuhoku
26
fail == raise
Innymi słowy, failjest po prostu popularnym aliasem do raisemetody zgłaszania błędów. Stosowanie:
www.ruby-doc.org to twój przyjaciel. Kiedy wyszukałem w Google rubydoc fail„ Kernel ”, był to pierwszy hit. Radzę, jeśli masz wątpliwości, udaj się do ostatecznego źródła takich definicji.
raise
podczas obsługi wyjątków, afail
kiedy nie.fail "Password too short" if password.length < 8
fail "No user name set" unless username
Odpowiedzi:
W Rubim
fail
jest synonimemraise
. Słowofail
kluczowe to metodaKernel
modułu zawartego w klasieObject
.fail
Metoda budzi błąd wykonania podobnie jakraise
hasła.fail
Metoda ma trzy przeciążeń:fail
: wywołujeRuntimeError
bez komunikatu o błędzie.fail(string)
: podnosi aRuntimeError
z argumentem łańcuchowym jako komunikatem o błędzie:fail "Failed to open file"
fail(exception [, string [, array]])
: zgłasza wyjątek klasyexception
(pierwszy argument) z opcjonalnym komunikatem o błędzie (drugi argument) i informacją zwrotną (trzeci argument).Przykład: Załóżmy, że definiujesz funkcję, która powinna zakończyć się niepowodzeniem, jeśli podano zły argument. Lepiej jest podnieść
ArgumentError
a nieRuntimeError
:fail ArgumentError, "Illegal String"
Inny przykład: Możesz przekazać cały ślad do
fail
metody, aby uzyskać dostęp do śladu wewnątrzrescue
bloku:fail ArgumentError, "Illegal String", caller
caller
jest metodą jądra, która zwraca ślad w postaci tablicy ciągów w postacifile:line: in 'method'
.Źródło: Dokumentacja Ruby dotycząca modułu jądra .
źródło
raise
Rubocop mówi o użyciu obu słów;
Oto przykład.
def sample fail 'something wrong' unless success? rescue => e logger.error e raise end
źródło
fail
==raise
Innymi słowy,
fail
jest po prostu popularnym aliasem doraise
metody zgłaszania błędów. Stosowanie:fail ArgumentError, "Don't argue with me!"
źródło
www.ruby-doc.org to twój przyjaciel. Kiedy wyszukałem w Google
rubydoc fail
„ Kernel ”, był to pierwszy hit. Radzę, jeśli masz wątpliwości, udaj się do ostatecznego źródła takich definicji.źródło