Selama menjalankan program, berbagai kesalahan akan selalu ditemui, seperti membuka file yang tidak ada.
Jika terjadi kesalahan saat menjalankan program, program akan berhenti. Kita perlu menggunakan beberapa metode deteksi untuk menghindari kesalahan dan mencegah program keluar.
Perl menyediakan beberapa metode untuk menangani kesalahan, dan kami akan memperkenalkannya satu per satu selanjutnya.
Pernyataan if dapat menentukan nilai kembalian dari pernyataan tersebut.
if(open(DATA, $file)){ ...}else{ die "Kesalahan: Tidak dapat membuka file - $!";}Variabel $! dalam program mengembalikan pesan kesalahan. Kita juga dapat menyederhanakan kode di atas menjadi kode berikut:
open(DATA, $file) ||.die "Kesalahan: Tidak dapat membuka file - $!";
Fungsi kecuali adalah kebalikan dari jika dan hanya akan dieksekusi ketika ekspresi mengembalikan false, seperti yang ditunjukkan di bawah ini:
kecuali(chdir("/etc")){ die "Kesalahan: Tidak dapat membuka direktori - $!";}Pernyataan kecuali sangat berguna ketika Anda ingin menyetel pengingat kesalahan. Kita juga dapat menyingkat kode di atas menjadi:
die "Kesalahan: Tidak dapat membuka direktori!: $!" kecuali(chdir("/etc"));Pesan kesalahan di atas hanya akan ditampilkan ketika ada kesalahan dalam peralihan direktori.
Berikut ini adalah contoh sederhana dari operator ternary:
print(exists($hash{value}) ? 'Ada' : 'Tidak ada',"n");Dalam contoh di atas, kami menggunakan operator ternary untuk menentukan apakah nilai hash ada.
Contoh berisi ekspresi dengan dua nilai, dalam format: ekspresi? nilai satu: nilai dua .
Fungsi peringatan digunakan untuk memicu pesan peringatan. Tidak ada operasi lain yang akan dilakukan. Ini adalah output ke STDERR (file output standar).
chdir('/etc') atau peringatkan "Tidak dapat berpindah direktori";Fungsi dadu mirip dengan peringatan, tetapi keluar. Umumnya digunakan sebagai keluaran pesan kesalahan:
chdir('/etc') atau mati "Tidak dapat berpindah direktori";Dalam skrip Perl, cara umum untuk melaporkan kesalahan adalah dengan menggunakan fungsi warning() atau die() untuk melaporkan atau menghasilkan kesalahan. Untuk modul Carp, ini dapat memberikan tingkat kontrol tambahan atas pesan yang dihasilkan, terutama di dalam modul.
Modul Carp standar menyediakan alternatif fungsi warning() dan die() yang lebih informatif dan mudah digunakan dalam menyediakan lokalisasi kesalahan. Saat digunakan dalam modul, nama modul dan nomor baris disertakan dalam pesan kesalahan.
Fungsi carp dapat mengeluarkan informasi jejak program, mirip dengan fungsi peringatan, dan biasanya mengirimkan informasi ini ke STDERR:
paket T;memerlukan Eksportir;@ISA = qw/Eksportir/;@EKSPOR = qw/function/;use Carp;sub function { carp "Kesalahan dalam modul!";}1;Panggil program berikut dalam skrip:
gunakan T;fungsi();
Dengan mengeksekusi program di atas, hasil keluarannya adalah:
Kesalahan dalam modul! di test.pl baris 4
cluck() mirip dengan warning() dan menyediakan penelusuran balik tumpukan dari tempat terjadinya kesalahan.
paket T;memerlukan Eksportir;@ISA = qw/Eksportir/;@EKSPOR = qw/function/;use Carp qw(cluck);sub function { cluck "Kesalahan dalam modul!";}1;Panggil program berikut dalam skrip:
gunakan T;fungsi();
Dengan mengeksekusi program di atas, hasil keluarannya adalah:
Kesalahan dalam modul! di T.pm baris 9 T::function() dipanggil di test.pl baris 4
croak(), seperti die(), mengakhiri skrip.
paket T;memerlukan Eksportir;@ISA = qw/Ekspor/;@EKSPOR = qw/function/;use Carp;sub function { croak "Kesalahan dalam modul!";}1;Panggil program berikut dalam skrip:
gunakan T;fungsi();
Dengan mengeksekusi program di atas, hasil keluarannya adalah:
Kesalahan dalam modul! di test.pl baris 4
mengaku() mirip dengan die(), namun menyediakan penelusuran balik tumpukan dari mana kesalahan terjadi.
paket T;memerlukan Eksportir;@ISA = qw/Ekspor/;@EKSPOR = qw/function/;use Carp;sub function { mengaku "Kesalahan dalam modul!";}1;Panggil program berikut dalam skrip:
gunakan T;fungsi();
Dengan mengeksekusi program di atas, hasil keluarannya adalah:
Kesalahan dalam modul! di T.pm baris 9 T::function() dipanggil di test.pl baris 4