penanganan kesalahan perl
program ini berjalan, selalu menghadapi berbagai kesalahan, seperti membuka file yang tidak ada.
Program ini berjalan akan berhenti jika terjadi kesalahan, kita perlu menggunakan beberapa metode untuk menghindari kesalahan deteksi, sehingga mencegah keluar program.
Perl menyediakan kesalahan multi-processing yang dibuat dalam metode, maka kita diperkenalkan satu per satu.
jika pernyataan
jika pernyataan dapat menentukan nilai kembali dari pernyataan, contoh adalah sebagai berikut:
if(open(DATA, $file)){ ... }else{ die "Error: 无法打开文件 - $!"; }
Program variabel $! Kembali pesan kesalahan. Kami juga dapat menyederhanakan kode di atas dengan kode berikut:
open(DATA, $file) || die "Error: 无法打开文件 - $!";
kecuali fungsi
kecuali fungsi dan jika sebaliknya, hanya ketika ekspresi mengembalikan false akan dilaksanakan sebagai berikut:
unless(chdir("/etc")){ die "Error: 无法打开目录 - $!"; }
kecuali pernyataan ketika Anda ingin mengatur kesalahan pengingat sangat berguna.Apa yang saya dapat juga disingkat sebagai kode di atas:
die "Error: 无法打开目录!: $!" unless(chdir("/etc"));
Pesan error di atas hanya ketika keadaan akan mengubah output kesalahan direktori.
operator ternary
Berikut ini adalah contoh sederhana dari operator ternary:
print(exists($hash{value}) ? '存在' : '不存在',"\n");
Contoh di atas kita menggunakan operator ternary untuk menentukan nilai hash ada.
Contoh termasuk ekspresi dari dua nilai, formatini :? A nilai ekspresi: Nilai II.
memperingatkan fungsi
memperingatkan fungsi digunakan untuk memicu pesan peringatan, tidak ada operasi lain, output ke stderr (file standar output), biasanya digunakan untuk meminta pengguna:
chdir('/etc') or warn "无法切换目录";
fungsi die
Fungsi die mirip dengan memperingatkan, tapi itu akan menjadi jalan keluar. Biasanya dengan suara keras keluaran pesan error:
chdir('/etc') or die "无法切换目录";
modul Carp
Dalam naskah Perl, metode yang umum digunakan adalah dengan menggunakan laporan kesalahan memperingatkan () atau mati () berfungsi untuk menghasilkan laporan atau kesalahan. Untuk modul Carp, yang dapat menghasilkan pesan untuk memberikan tingkat tambahan kontrol, terutama di dalam modul.
Modul Carp standar menyediakan memperingatkan () dan mati () fungsi alternatif, mereka memberikan informasi lebih dalam penyediaan posisi yang salah, dan lebih ramah. Ketika digunakan dalam modul, pesan kesalahan berisi nama modul dan nomor baris.
fungsi ikan mas
Fungsi ikan mas dapat keluaran pelacakan informasi tentang program, mirip dengan memperingatkan fungsi biasanya akan mengirimkan informasi ke stderr:
package T; require Exporter; @ISA = qw/Exporter/; @EXPORT = qw/function/; use Carp; sub function { carp "Error in module!"; } 1;
Dalam script panggilan prosedur berikut:
use T; function();
Program di atas, output adalah:
Error in module! at test.pl line 4
fungsi keok
keok () dan memperingatkan () mirip, disediakan kesalahan di stack kembali jejak.
package T; require Exporter; @ISA = qw/Exporter/; @EXPORT = qw/function/; use Carp qw(cluck); sub function { cluck "Error in module!"; } 1;
Dalam script panggilan prosedur berikut:
use T; function();
Program di atas, output adalah:
Error in module! at T.pm line 9 T::function() called at test.pl line 4
fungsi parau
parau () dan mati (), seperti dapat menyelesaikan naskah.
package T; require Exporter; @ISA = qw/Exporter/; @EXPORT = qw/function/; use Carp; sub function { croak "Error in module!"; } 1;
Dalam script panggilan prosedur berikut:
use T; function();
Program di atas, output adalah:
Error in module! at test.pl line 4
fungsi mengaku
mengaku () dan mati () adalah serupa, tetapi menawarkan dari kesalahan stack kembali jejak.
package T; require Exporter; @ISA = qw/Exporter/; @EXPORT = qw/function/; use Carp; sub function { confess "Error in module!"; } 1;
Dalam script panggilan prosedur berikut:
use T; function();
Program di atas, output adalah:
Error in module! at T.pm line 9 T::function() called at test.pl line 4