Saya belajar Ruby dan menemukan failkata kunci. Apa artinya?
if password.length < 8
fail "Password too short"
end
unless username
fail "No user name set"
end
Saya belajar Ruby dan menemukan failkata kunci. Apa artinya?
if password.length < 8
fail "Password too short"
end
unless username
fail "No user name set"
end
fail "Password too short" if password.length < 8danfail "No user name set" unless username
Jawaban:
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.
Sumber: Dokumentasi Ruby tentang Modul Kernel .
raise
Rubocop mengatakan tentang penggunaan kedua kata tersebut;
'Gunakan
failalih-alihraiseuntuk memberi sinyal pengecualian.''Gunakan
raisebukanfailuntuk menampilkan kembali pengecualian.'
Berikut ini contohnya.
def sample
fail 'something wrong' unless success?
rescue => e
logger.error e
raise
end
fail == raise
Dengan kata lain, failhanya alias yang populer untuk raisemetode peningkatan kesalahan. Pemakaian:
fail ArgumentError, "Don't argue with me!"
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.
raisesaat menangani pengecualian danfailsaat tidak.