Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Kemahiran pengendalian pengecualian dan pembalakan ralat dalam C#

Kemahiran pengendalian pengecualian dan pembalakan ralat dalam C#

WBOY
WBOYasal
2023-10-08 11:51:341546semak imbas

Kemahiran pengendalian pengecualian dan pembalakan ralat dalam C#

Pengendalian pengecualian dan kemahiran pengelogan ralat dalam C#

Pengenalan:
Dalam proses pembangunan perisian, pengendalian pengecualian dan pengelogan ralat adalah pautan yang sangat penting. Untuk pembangun C#, menguasai kemahiran pengendalian pengecualian dan kaedah pengelogan ralat boleh membantu kami menjejaki dan menyahpepijat kod dengan lebih baik, serta meningkatkan kestabilan dan kebolehselenggaraan program. Artikel ini akan memperkenalkan teknik pengendalian pengecualian biasa dalam C# dan menyediakan contoh kod khusus untuk membantu pembaca memahami dengan lebih baik dan menggunakan pengendalian pengecualian dan pengelogan ralat.

1. Konsep asas pengendalian pengecualian
Pengecualian merujuk kepada ralat atau situasi tidak dijangka yang berlaku semasa program berjalan. C# menyediakan mekanisme pengendalian pengecualian yang berkuasa yang membolehkan kami menangkap, mengendalikan dan melaporkan pengecualian ini. Dalam C#, pengecualian wujud dalam bentuk objek, dan semua objek pengecualian diperoleh daripada kelas System.Exception.

Dalam C#, pengendalian pengecualian terutamanya termasuk kata kunci dan pernyataan berikut:

  1. cuba: digunakan untuk menentukan blok kod yang mungkin menyebabkan pengecualian.
  2. tangkap: digunakan untuk menangkap dan mengendalikan pengecualian.
  3. akhirnya: digunakan untuk menentukan blok kod yang akan dilaksanakan tanpa mengira sama ada pengecualian berlaku.
  4. lontaran: digunakan untuk menaikkan pengecualian secara manual.
  5. menggunakan: Digunakan untuk mengisytiharkan penggunaan sumber, yang akan dikeluarkan secara automatik apabila digunakan.

2. Kemahiran pengendalian pengecualian

  1. Tangkap dan kendalikan jenis pengecualian tertentu
    Dalam pembangunan sebenar, kita mungkin perlu mengendalikan jenis pengecualian tertentu secara berbeza. Pada masa ini, anda boleh menggunakan berbilang kenyataan tangkapan untuk menangkap pelbagai jenis pengecualian dan mengendalikannya dalam blok tangkapan yang berbeza.
try
{
    // 可能引发异常的代码块
}
catch (FileNotFoundException ex)
{
    // 处理FileNotFoundException类型的异常
    Console.WriteLine("文件未找到:" + ex.FileName);
}
catch (DivideByZeroException ex)
{
    // 处理DivideByZeroException类型的异常
    Console.WriteLine("除数不能为零");
}
catch (Exception ex)
{
    // 处理其他类型的异常
    Console.WriteLine("发生了一个未知的错误:" + ex.Message);
}
finally
{
    // 执行清理操作,无论是否发生异常都会执行
}
  1. Baling semula pengecualian
    Kadangkala, kita perlu melontar semula pengecualian dalam logik pengendalian pengecualian, atau menyerahkan pengecualian yang ditangkap kepada pemanggil atas untuk merekodkan dan menjejaki pengecualian dengan lebih baik.
try
{
    // 可能引发异常的代码块
}
catch (Exception ex)
{
    // 处理异常
    Console.WriteLine("发生了一个错误:" + ex.Message);
    throw; //重新引发异常,让上层调用者处理
}
  1. Gunakan akhirnya sekat untuk melepaskan sumber
    Dalam pengendalian pengecualian, akhirnya sekatan boleh digunakan untuk melepaskan sumber, yang akan dilaksanakan tanpa mengira sama ada pengecualian berlaku.
FileStream file = null;
try
{
    file = new FileStream("filename.txt", FileMode.Open);
    // 使用文件流进行读写操作
}
catch (IOException ex)
{
    // 处理IOException类型的异常
    Console.WriteLine(ex.Message);
}
finally
{
    // 释放资源
    if (file != null)
    {
        file.Close();
    }
}

3 Kemahiran mengelog ralat
Selain menangkap dan mengendalikan pengecualian, kami juga perlu merekodkan maklumat ralat untuk analisis dan penyahpepijatan seterusnya. Anda boleh menggunakan perpustakaan pengelogan dalam C# untuk melaksanakan rakaman log ralat. Di bawah ialah contoh kod untuk ralat pengelogan menggunakan pustaka NLog:

  1. Pasang dan rujuk pustaka NLog:
    Cari NLog dalam Pengurus Pakej NuGet Visual Studio dan pasangkannya.
  2. Konfigurasikan NLog:
    Dalam fail konfigurasi aplikasi, tambah maklumat konfigurasi NLog.
<configuration>
  <configSections>
    <section name="nlog" type="NLog.Config.ConfigSectionHandler, NLog"/>
  </configSections>
 
  <nlog>
    <targets>
      <target name="logfile" xsi:type="File" fileName="log.txt"/>
    </targets>
    <rules>
      <logger name="*" minlevel="Error" writeTo="logfile"/>
    </rules>
  </nlog>
</configuration>
  1. Gunakan NLog untuk merekod log ralat:
private static Logger logger = LogManager.GetCurrentClassLogger();

try
{
    // 可能引发异常的代码块
}
catch (Exception ex)
{
    // 记录错误日志
    logger.Error(ex, "发生了一个错误");
}

IV. Ringkasan
Artikel ini memperkenalkan teknik pengendalian pengecualian dan kaedah pengelogan ralat dalam C#, dan menyediakan contoh kod khusus. Pengendalian pengecualian dan pengelogan ralat adalah bahagian yang sangat penting dalam pembangunan perisian. Ia boleh membantu kami menjejak dan menyahpepijat kod dengan lebih baik, serta meningkatkan kestabilan dan kebolehselenggaraan program. Dengan menguasai kemahiran dan kaedah ini, kami boleh mengendalikan pengecualian dengan lebih baik, mengurangkan ranap dan ralat program serta meningkatkan kecekapan pembangunan dan pengalaman pengguna kami. Saya harap pembaca dapat memahami dengan lebih baik dan menggunakan pengendalian pengecualian dan pengelogan ralat melalui pengenalan dan kod contoh artikel ini.

Atas ialah kandungan terperinci Kemahiran pengendalian pengecualian dan pembalakan ralat dalam C#. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn