Latest web development tutorials

C penanganan # exception

Kelainan pada masalah eksekusi program. C # adalah pengecualian dalam menanggapi keadaan luar biasa yang timbul ketika program berjalan, seperti upaya untuk membagi dengan nol.

Pengecualian diberikan kontrol program yang ditransfer dari satu bagian ke bagian lain dari jalan. C # penanganan eksepsi berdasarkan empat kata kuncidi atas:mencoba, menangkap, akhirnya danmelempar.

  • coba: blok try mengidentifikasi pengecualian khusus dari blok kode yang akan diaktifkan.Diikuti oleh satu atau lebih blok catch.
  • menangkap: menangkap program pengecualian melalui handler pengecualian.menangkap kata kunci menunjukkan capture abnormal.
  • akhirnya: akhirnya blok digunakan untuk melakukan pernyataan yang diberikan, terlepas dari apakah pengecualian dibuang akan mengeksekusi.Misalnya, jika Anda membuka file, terlepas dari apakah harus ada file pengecualian ditutup.
  • membuang: Ketika masalah muncul, program melempar pengecualian.Gunakan kata kunci untuk menyelesaikan melempar.

tatabahasa

Misalkan blok normal, metode menggunakan kata kunci mencoba dan menangkap pengecualian. Kode mencoba / menangkap blok kode dilindungi, penggunaan mencoba / menangkap seperti yang ditunjukkan pada sintaks berikut:

mencoba
{
   } // Pernyataan yang menyebabkan pengecualian
catch (ExceptionName e1)
{
   // Penanganan Error code}
catch (ExceptionName e2)
{
   // Penanganan Error code}
catch (ExceptionName eN)
{
   // Penanganan Error code}
akhirnya
{
   // Laporan untuk mengeksekusi}

Anda dapat melihat banyak laporan menangkap untuk menangkap berbagai jenis pengecualian, untuk mencegah blok try menghasilkan beberapa pengecualian dalam keadaan yang berbeda.

kelas Exception di C #

C # pengecualian adalah penggunaan representasi kelas. kelas Exception di C # sebagian besar langsung atau tidak langsung berasal dari kelasSystem.Exception.System.ApplicationException danSystem.SystemExceptionkelas berasal terkecuali kelas kelas System.Exception.

dukungan kelasSystem.ApplicationException dihasilkan oleh pengecualian aplikasi.Jadi pengecualian programmer-didefinisikan harus berasal dari kelas ini.

kelasSystem.SystemException semua kelas dasar sistem yang telah ditetapkan untuk pengecualian.

Tabel berikut berisi daftar beberapa yang berasal dari kelas eksepsi yang telah ditetapkan kelas Sytem.SystemException:

异常类描述
System.IO.IOException处理 I/O 错误。
System.IndexOutOfRangeException处理当方法指向超出范围的数组索引时生成的错误。
System.ArrayTypeMismatchException处理当数组类型不匹配时生成的错误。
System.NullReferenceException处理当依从一个空对象时生成的错误。
System.DivideByZeroException处理当除以零时生成的错误。
System.InvalidCastException处理在类型转换期间生成的错误。
System.OutOfMemoryException处理空闲内存不足生成的错误。
System.StackOverflowException处理栈溢出生成的错误。

Penanganan Exception

C # untuk mencoba dan menangkap blok disediakan dalam bentuk program penanganan eksepsi terstruktur. Menggunakan blok ini, laporan program inti dan laporan penanganan error dipisahkan.

Kesalahan penanganan blok ini adalah dengan menggunakantry, catchdanakhirnyakata kunci untuk mencapai. Berikut adalah pengecualian dilemparkan ketika dibagi dengan nol Contoh:

menggunakan System;
namespace ErrorHandlingApplication
{
    DivNumbers kelas
    {
        int hasil;
        DivNumbers ()
        {
            Hasil = 0;
        }
        divisi public void (int num1, int num2)
        {
            mencoba
            {
                Hasil = num1 / num2;
            }
            catch (DivideByZeroException e)
            {
                Console.WriteLine ( "Exception tertangkap: {0}", e);
            }
            akhirnya
            {
                Console.WriteLine ( "Hasil: {0}", hasil);
            }

        }
        static void Main (string [] args)
        {
            DivNumbers d = DivNumbers baru ();
            d.division (25, 0);
            Console.ReadKey ();
        }
    }
}

Ketika kode di atas dikompilasi dan dijalankan, menghasilkan hasil sebagai berikut:

Pengecualian tertangkap: System.DivideByZeroException: Mencoba untuk membagi dengan nol. 
di ...
Hasil: 0

Buat user-defined pengecualian

Anda juga dapat mendefinisikan pengecualian Anda sendiri. User-didefinisikan kelas pengecualian berasal dari kelasApplicationException.Contoh berikut menggambarkan hal ini:

menggunakan System;
namespace UserDefinedException
{
   kelas TestTemperature
   {
      static void Main (string [] args)
      {
         Suhu temp = suhu baru ();
         mencoba
         {
            temp.showTemp ();
         }
         catch (TempIsZeroException e)
         {
            Console.WriteLine ( "TempIsZeroException: {0}", e.Message);
         }
         Console.ReadKey ();
      }
   }
}
public class TempIsZeroException: ApplicationException
{
   TempIsZeroException publik (pesan string): dasar (pesan)
   {
   }
}
Suhu public class
{
   Suhu int = 0;
   public void showTemp ()
   {
      jika (suhu == 0)
      {
         melemparkan (TempIsZeroException baru ( "Nol Suhu ditemukan"));
      }
      lain
      {
         Console.WriteLine ( "Suhu: {0}", suhu);
      }
   }
}

Ketika kode di atas dikompilasi dan dijalankan, menghasilkan hasil sebagai berikut:

TempIsZeroException: Nol Suhu ditemukan

Throwable

Jika pengecualian secara langsung atau tidak langsung berasal dari kelasSystem.Exception, Anda bisa melempar sebuah benda.Anda dapat menggunakan pernyataan menangkap blok melempar membuang objek saat ini sebagai berikut:

Catch (Exception e)
{
   ...
   throw e
}