Error Handling

Error Handling

Pernah kalian menggunakan program dan di tengah kalian asik bekerja tiba-tiba hang, ataumenutup sendiri? Ini bisa disebabkan adanya error yang muncul tapi belum diantisipasi olehprogram tersebut.
Dalam pembuatan program, kesalahan tidak hanya terjadi pada kode program (syntaxerror), kesalahan mungkin juga terjadi di pihak pengguna seperti kesalahan dalam menginputkannilai ke dalam program. Program yang baik adalah yang bisa mengantisipasi kesalahan seperti itusehingga tidak berhenti di tengah jalan.
Jika program berhenti di tengah jalan, maka penggunaharus memulai dari awal, dan tentu ini menyebabkan banyaknya waktu yang hilang. Belum lagi jikauser melakukan sesalahan lagi.
Selain kesalahan penulisan (syntax error) dikenal juga run-time error, yaitu kesalahan yangmuncul saat program dijalankan. Sebagai contoh pembagian dengan nol.Hasil:=a/b;
Agar program tidak langsung berhenti, maka perlu kesalahan perlu diantisipasi. Penanganankesalahan ini disebut error handling atau exception. Kemampuan menangani error mutlak harusdikuasai oleh seorang programmer.
Di dalam Free Pascal disediakan beberapa metode penangan error, di antaranya adalahmenggunakan pernyataan
Try …Except, Try…Finally, dan Raise Exception.

1. Pernyataan Try ….Except.

Pernyataan ini menjalankan serangkaian proses dengan perintah Try di depan, kemudiansetelah itu diikuti Except, untuk menandakan kejadian khusus yang dideteksi sebagai error(kesalahan). Sintaks dari pernyataan Try Except adalah sebagai berikut.
Try

Pernyataan1;
Pernyataan2;
except
on e: exception do // Exception handling
begin
Writeln('Error: ' + e.message);
end;
end;
Untuk dapat menggunakan pernyataan Try Except di bagian awal program harus dipanggil dulu
unit-unit yang terkait dengan pengguaan pernyataan ini.
Contoh 1.
program ExceptionHandling;
{$mode objfpc}{$H+} uses {$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF} Classes, sysutils;
var
a, b: Integer; Hasil: Real; begin try Write('masukkan nilai a: '); Readln(a); Write('Masukkan nilai b: '); Readln(b); Hasil:= a/ b; Writeln('a/ b = ', Hasil); except on e: exception do begin Writeln('Telah terjadi error: ', e.message); end; end; Readln; end.

Coba kita jalankan dengan dengan masukan =4 dan b=0
Ketika error terjadi, yaitu adanya pembagian dengan nol maka akan muncul pesan “Telah terjadi error” diikuti dengan tipe kesalahan yang terjadi. Kejadian exception (pengecualian) dideteksi pada pernyataan Hasil:=a/b. Jika nilai b = 0 maka perintah di bawah pengecualian
akan dilakukan jika tidka maka langkah-langkah dalam pengecualian tidak dilakukan.

2. Pernyataan Try… Finally

Pernyataan Try .. Finally ini menjalankans erangkain proses setelah perintah Try. Jika ada error
ma pada bagian error itu akan dilewati. Kemudian perintah-perintah setelah pernyataan Finally
akan dieksekusi apapun yang terjadi baik ada kesalahan atau tidak.
Sintak pernyataan Try …Finally
try
Pernyataan1;
Pernyataan2;
Finally
Pernyataan3;
end;
Contoh 2.
program ExceptionHandling; {$mode objfpc}{$H+} uses {$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF} Classes, sysutils;
var
a, b: Integer; Hasil: Real; begin try Write(‘masukkan nilai a: ‘); Readln(a); Write(‘Masukkan nilai b: ‘); Readln(b);
Bab 5 Pengembangan Algoritma Aplikasi 173
Hasil:= a/ b; Writeln(‘a/ b = ‘, Hasil); Finally
Begin Writeln(‘Tekan Enter untuk menyelesaikan’); Readln; End; end; end.
Dengan input a=4 dan b=0 maka keluarannya adalah:
Error sebenarnya terdeteksi tapi tidak ada tindakan khusus. Hal ini terlihat ketika keluar dari
program

3. Pernyataan Raise Exception

Dalam membuat program terkadang dibutuhkan suatu nilai dengan rentang tertentu, Misalkan
variabel bulan, bernilai dari 1 sampai 12, tidak ada nilai 0 ataupun 13. Untuk menghindari
kesalahan seperti ini digunakan pernyataan raise exception.
Berikut ini contoh penggunannya:
Contoh 3.
program ExceptionHandling; {$mode objfpc}{$H+} uses {$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF} Classes, sysutils; Var bulan: Integer; begin Write(‘Masukkan bulan ke berapa: ‘); Readln(bulan); try if (bulan< 1) or (xbulan> 12) then // raise exception raise exception.Create(‘Nilai Bulan di luar jangkauan’); Writeln(‘Anda memasukkan bulan ke ‘,bulan); except on e: exception do // Catch my exception begin Writeln(‘Kesalahannya adalah: ‘ + e.Message); end; end; Write(‘Tekan Enter untuk menutup’); Readln; end.
Hasil outputnya untuk kesalahan seperti nilai bulan=13

About the Author

Admin

Assalamualaikum. Saya Ahmad Mazlan, Programmer muda yang masih belajar dan ingin segera berbagi tentang dunia programming. Semua bisa menjadi Programmer selama memiliki keinginan yang kuat untuk belajar.

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *