Perhatikan juga, Anda dapat menulis ini sebagai pernyataan satu baris: fail "Password too short" if password.length < 8danfail "No user name set" unless username
PhilT
Jawaban:
136
Di Ruby, failsama artinya dengan raise. Kata failkunci adalah metode Kernelmodul yang disertakan oleh kelas Object. The failMetode menimbulkan error seperti raisekata kunci.
The failmetode memiliki tiga overloads:
fail: memunculkan RuntimeErrorpesan kesalahan tanpa kesalahan.
fail(string): memunculkan a RuntimeErrordengan argumen string sebagai pesan kesalahan:
fail "Failed to open file"
fail(exception [, string [, array]]): memunculkan pengecualian kelas exception(argumen pertama) dengan pesan kesalahan opsional (argumen kedua) dan informasi panggilan balik (argumen ketiga).
Contoh: Asumsikan Anda mendefinisikan fungsi yang harus gagal jika diberikan argumen yang buruk. Lebih baik menaikkan ArgumentErrordan bukan RuntimeError:
fail ArgumentError, "Illegal String"
Contoh Lain: Anda bisa meneruskan seluruh lacak balik ke failmetode sehingga Anda bisa mengakses jejak di dalam rescueblok:
fail ArgumentError, "Illegal String", caller
calleradalah metode kernel yang mengembalikan lacak balik sebagai larik string dalam bentuk file:line: in 'method'.
Tanpa argumen, memunculkan pengecualian di $! atau menimbulkan RuntimeError if $! nihil. Dengan argumen String tunggal, memunculkan RuntimeError dengan string sebagai pesan. Jika tidak, parameter pertama haruslah nama kelas Exception (atau objek yang mengembalikan objek Exception saat mengirim pesan pengecualian). Parameter opsional kedua menyetel pesan yang terkait dengan pengecualian, dan parameter ketiga adalah larik informasi panggilan balik. Pengecualian ditangkap oleh klausa penyelamatan blok awal ... blok akhir.
1 untuk penasehat gaya; bahkan jika mereka identik secara semantik menggunakan masing-masing dalam pengaturan yang dimaksudkan membantu menyampaikan niat dengan lebih baik
fatuhoku
26
fail == raise
Dengan kata lain, failhanya alias yang populer untuk raisemetode peningkatan kesalahan. Pemakaian:
www.ruby-doc.org adalah teman Anda. Saat saya mencari di Google rubydoc fail" Kernel " adalah hit pertama. Saran saya, jika ragu, pergilah ke sumber definitif untuk hal-hal definisi seperti ini.
Woot, itu benar-benar GAGAL. Contoh kode untuk gagal adalah copy-paste dari raise o_O
Vajk Hermecz
4
@VajkHermecz gagal adalah alias dari kenaikan gaji, jadi ini menggunakan kembali dokumentasi. Bandingkan dengan dokumen untuk Array # map dan Array # collect
raise
saat menangani pengecualian danfail
saat tidak.fail "Password too short" if password.length < 8
danfail "No user name set" unless username
Jawaban:
Di Ruby,
fail
sama artinya denganraise
. Katafail
kunci adalah metodeKernel
modul yang disertakan oleh kelasObject
. Thefail
Metode menimbulkan error sepertiraise
kata kunci.The
fail
metode memiliki tiga overloads:fail
: memunculkanRuntimeError
pesan kesalahan tanpa kesalahan.fail(string)
: memunculkan aRuntimeError
dengan argumen string sebagai pesan kesalahan:fail "Failed to open file"
fail(exception [, string [, array]])
: memunculkan pengecualian kelasexception
(argumen pertama) dengan pesan kesalahan opsional (argumen kedua) dan informasi panggilan balik (argumen ketiga).Contoh: Asumsikan Anda mendefinisikan fungsi yang harus gagal jika diberikan argumen yang buruk. Lebih baik menaikkan
ArgumentError
dan bukanRuntimeError
:fail ArgumentError, "Illegal String"
Contoh Lain: Anda bisa meneruskan seluruh lacak balik ke
fail
metode sehingga Anda bisa mengakses jejak di dalamrescue
blok:fail ArgumentError, "Illegal String", caller
caller
adalah metode kernel yang mengembalikan lacak balik sebagai larik string dalam bentukfile:line: in 'method'
.Sumber: Dokumentasi Ruby tentang Modul Kernel .
sumber
raise
Rubocop mengatakan tentang penggunaan kedua kata tersebut;
Berikut ini contohnya.
def sample fail 'something wrong' unless success? rescue => e logger.error e raise end
sumber
fail
==raise
Dengan kata lain,
fail
hanya alias yang populer untukraise
metode peningkatan kesalahan. Pemakaian:fail ArgumentError, "Don't argue with me!"
sumber
www.ruby-doc.org adalah teman Anda. Saat saya mencari di Google
rubydoc fail
" Kernel " adalah hit pertama. Saran saya, jika ragu, pergilah ke sumber definitif untuk hal-hal definisi seperti ini.sumber