Programming Learning

Free IT e-learning

[Delphi] Penjebakan Error Secara Global

Dalam membuat aplikasi sepintar-pintarnya membuat tidak akan lepas dari yang namanya bug. bug terjadi dapat dikarenakan beberapa faktor :

  1. Ketidaktelitian programmer sewaktu melakukan coding, bisa karena capek atau memang kelewatan.
  2. Validasi-validasi aplikasi yang kurang sempurna.
  3. Faktor luar seperti contoh ketika ada event yang mengubah key registry tetapi ternyata login user windows bukan administrator maka tidak dapat melakukan pengubahan key di registry, akibatnya…errorpun terjadi.
  4. de el el (banyak sekali contoh yang lain)

Mungkin dengan cara Try…Except hal itu dapat dihandle tapi apabila coding yang tadinya dipikir tidak bakalan ada error yang terjadi dan kemudian malah error maka akan tampil error yang aneh.

Untuk itu kita perlu mengantisipasinya dengan membuat suatu penjebakan error secara global. untuk itu kita buat suatu form khusus untuk penjebakan error, ini adalah contoh form yang saya buat untuk melakukan penjebakan error, apabila anda memiliki desain yang lebih baik maka akan lebih baik menggunakan desain yang anda buat :

Form Error

Di Form error ini kita buat procedure yang bersifat public, caranya adalah ditempelkan di form bagian sessi Public, berikut ini adalah potongan kodenya :


private
{ Private declarations }
public
procedure prepareError(aForm,aControl,aMessage: string);

untuk pendeklarasian procedure ini adalah sebagai berikut :


procedure TfrmError.prepareError(aForm, aControl, aMessage: string);
begin
lblForm.Caption     := aForm;
lblControl.Caption  := aControl;
advmError.Lines.Text:= Trim(aMessage);
end;

kemudian pada Form Utama kita membuat suatu prosedur, untuk belajar cara pembuatannya silahkan melihat artikel yang sebelumnya🙂. procedure ini bernama ShowException(Sender: TObject ; E: Exception) dideklarasikan di sessi private TForm seperti pada potongan kode berikut ini :


private
procedure ShowException(Sender: TObject ; E: Exception);
{ Private declarations }
public
{ Public declarations }
end;

dan isi dari pendeklarasian procedure tersebut adalah sebagai berikut :


procedure TMainProc.ShowException(Sender: TObject; E: Exception);
function GetSenderForm(const Sender: TObject): TForm;
var Root: TWinControl;
 AForm: TFOrm;
begin
if not (Sender is TWinControl) then
 begin
  Result := nil;
  Exit;
 end;

Root := TWinControl(Sender).Parent;
while (Root  nil) and (Root.Parent  nil) do
  Root:= Root.Parent;

AForm := Root as TForm;
Result := AForm;
end;
var
strfrmName,strSender,strClass,strMessage: string;
begin
strfrmName  := GetSenderForm(Sender).Name;
strClass    := TWinControl(GetSenderForm(Sender).ActiveControl).ClassName;
strSender   := TWinControl(GetSenderForm(Sender).ActiveControl).Name;
strMessage  := e.Message;

frmError    := TfrmError.Create(nil);
with frmError do
 begin
   prepareError(strfrmName,strClass + ' - [' + strSender + ']',strMessage);
   ShowModal;
   Free;
 end;
end;

nah trus pada Form Utama di event OnCreate kita tancapkan kode sbg berikut :


Application.onException := ShowException;

sekarang coba tempelkan button di Form Utama dan isi dengan berikut ini :


StrToInt('Gak Mungkin Bisa,Pasti konversi ini error');

nah apabila anda telah benar melakukan langkah-langkahnya maka akan timbul pesan error sebagai berikut :
Error Integer

Ok…semoga tutorial ini dapat membantu anda menciptakan aplikasi yang lebih baik.

3 responses to “[Delphi] Penjebakan Error Secara Global

  1. Noryahya Mei 5, 2009 pukul 1:09 am

    mantab nih tutorialnya…
    sangat bermanfaat bagi newbie kayak aku…

  2. Tigor Manurung Mei 5, 2009 pukul 4:09 am

    xixixixixi…wah daku yg kudu bljar nih dr situ, kpan neh ajarin java….hehehhehe…

  3. Syarif Sjahrial Mei 6, 2009 pukul 10:43 am

    cakeuppppp…. Muantabbbb…

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: