Recent Posts

Selasa, 15 Oktober 2013

Starts code that has error trapping


Try
    Statement
  {Statement...}
  Finally
    Statement
  {Statement...}
  End;
 Try
    Statement
  {Statement...}
  Except
    Statement
  {Statement...}
  End;  
Try
    Statement
  {Statement...}
  Except
    On {Name :} Exception type Do Statement
  {Else Statement}
  End;
 
         




deskripsi
The Try kata kunci yang digunakan untuk menandai awal blok pernyataan yang memiliki perangkap kesalahan . Jika kesalahan terjadi , program ini tidak dihentikan . Sebaliknya , kontrol akan diteruskan ke salah satu bagian Akhirnya atau Kecuali .

Cobalah digunakan dalam beberapa cara .

versi 1

Dalam Try - Akhirnya membangun, Akhirnya pernyataan dijamin akan dieksekusi benar-benar terlepas dari apa yang terjadi dalam klausa Try . Namun, akhirnya klausul tidak benar-benar menangani pengecualian - program ini akan berakhir jika ada klausa Kecuali ditemukan ( lihat catatan di bawah ) .

Coba - Akhirnya biasanya digunakan oleh rutin untuk memungkinkan pemrosesan pembersihan berlangsung , seperti sumber daya membebaskan , dengan pengecualian yang benar diteruskan ke pemanggil untuk menangani .

versi 2

Dalam versi ini , hanya jika klausa Try menghasilkan pengecualian akan dilakukan Kecuali klausa dieksekusi . Ini digunakan untuk mengambil tindakan alternatif ketika sesuatu yang tidak terduga terjadi kesalahan . Kecuali klausul tidak dapat menentukan jenis kesalahan namun.

versi 3

Hal ini mirip dengan versi 2 , tetapi menentukan tindakan yang berbeda untuk jenis pengecualian yang berbeda , seperti EInOutError . Klausul Lain dapat digunakan sebagai menangkap semua untuk jenis pengecualian yang tak terduga . General pengecualian jenis Exception dapat digunakan untuk menangkap semua jenis pengecualian .

Dengan menetapkan Nama untuk pengecualian , teks pesan pengecualian ( Name.Message ) dapat diperoleh untuk display atau penggunaan lainnya.

Ketika eksepsi dimunculkan dalam versi 3 setup, jika pengecualian tersebut tidak ditindaklanjuti oleh pernyataan Aktif atau Lain, maka cek dibuat untuk melihat apakah kita berada dalam bersarang Coba blok . Jika demikian, Kecuali klausul ini orangtua Try diproses . Jika tidak ada klausul Aktif atau Else ditemukan , program berakhir .

Yang Lain klausul sebenarnya tidak penting - itu adalah lebih baik untuk menggunakan Pada E : Exception Do, penanganan eksepsi generik , karena masih memberikan pesan kesalahan ( E.Message ) .

Penting: Anda dapat menentukan jenis kesalahan yang terjadi dengan menggunakan penanganan eksepsi generik - Pada E : Exception Do. E adalah pointer ke objek pengecualian yang dibuat oleh kondisi pengecualian . E.ClassName memberikan jenis pengecualian , seperti ' EDivByZero ' , seperti yang ditunjukkan dalam kode contoh terakhir .

Example code : Version 1 : Zero divide with a finally clause var
  number, zero : Integer;
begin
  // Try to divide an integer by zero - to raise an exception
  number := -1;
  Try
    zero   := 0;
    number := 1 div zero;
    ShowMessage('number / zero = '+IntToStr(number));
  finally
    if number = -1 then
    begin
      ShowMessage('Number was not assigned a value - using default');
      number := 0;
    end;
  end;
end;

Example code : Version 2 : Zero divide with a plain Except block var
  number, zero : Integer;
begin
  // Try to divide an integer by zero - to raise an exception
  Try
    zero   := 0;
    number := 1 div zero;
    ShowMessage('number / zero = '+IntToStr(number));
  except
    ShowMessage('Unknown error encountered');
  end;
end;

Example code : Version 3 : Divide by zero with an Except On clause var
  number, zero : Integer;
begin
  // Try to divide an integer by zero - to raise an exception
  Try
    zero   := 0;
    number := 1 div zero;
    ShowMessage('number / zero = '+IntToStr(number));
  except
    on E : Exception do
      ShowMessage(E.ClassName+' error raised, with message : '+E.Message);
  end;
end;
 
 

0 komentar:

Posting Komentar