Latest web development tutorials

C Penanganan Kesalahan

Bahasa C tidak memberikan dukungan langsung untuk penanganan kesalahan, tetapi sebagai bahasa pemrograman sistem, ia mengembalikan nilai form memungkinkan Anda untuk mengakses data yang mendasarinya. Ketika terjadi kesalahan, sebagian besar UNIX atau C fungsi panggilan mengembalikan 1 atau NULL, kode kesalahan juga akan mengaturerrno, kode kesalahan ini adalah variabel global, mengungkapkan selama kesalahan fungsi panggilan terjadi.Anda dapat menemukan berbagai kesalahan kode <error.h> file header.

Oleh karena itu, C programmer dapat kembali nilai-nilai dengan memeriksa apa tindakan yang tepat dan kemudian mengambil keputusan berdasarkan nilai kembali. Pengembang harus di inisialisasi program errno diatur ke 0, yang merupakan praktek pemrograman yang baik. Nilai 0 menunjukkan bahwa program tidak ada kesalahan.

errno, perror () dan strerror ()

Bahasa C menyediakanperror () dan strerror ()berfungsi untuk menampilkan pesan teks yang terkait denganerrno tersebut.

  • perror () fungsi untuk menunjukkan pass string nya, diikuti oleh titik dua, spasi dan representasi teks dari nilai errno saat ini.
  • strerror () mengembalikan fungsi pointer ke nilai saat ini dari representasi errno teks.

Mari kita mensimulasikan kasus palsu, upaya untuk membuka file yang tidak ada. Anda dapat menggunakan beberapa cara untuk menampilkan pesan error, di sini kita menggunakan fungsi untuk menunjukkan penggunaan. Hal lain yang perlu diperhatikan, Anda harus menggunakan aliranstderr file output untuk semua kesalahan.

#include <stdio.h>
#include <errno.h>
#include <string.h>

extern int errno ;

int main ()
{
   FILE * pf;
   int errnum;
   pf = fopen ("unexist.txt", "rb");
   if (pf == NULL)
   {
      errnum = errno;
      fprintf(stderr, "错误号: %d\n", errno);
      perror("通过 perror 输出错误");
      fprintf(stderr, "打开文件错误: %s\n", strerror( errnum ));
   }
   else
   {
      fclose (pf);
   }
   return 0;
}

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

错误号: 2
通过 perror 输出错误: No such file or directory
打开文件错误: No such file or directory

Pembagian dengan nol kesalahan

Selama pembelahan, pembagi adalah nol jika tidak diperiksa, akan menghasilkan error.

Untuk mencegah hal ini terjadi, berikut kode sebelum membuat divisi pertama akan memeriksa pembagi adalah nol:

#include <stdio.h>
#include <stdlib.h>

main()
{
   int dividend = 20;
   int divisor = 0;
   int quotient;
 
   if( divisor == 0){
      fprintf(stderr, "除数为 0 退出运行...\n");
      exit(-1);
   }
   quotient = dividend / divisor;
   fprintf(stderr, "quotient 变量的值为 : %d\n", quotient );

   exit(0);
}

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

除数为 0 退出运行...

status program exit

Dalam keadaan normal, keberhasilan pelaksanaan program setelah waktu operasi normal akan keluar dengan EXIT_SUCCESS nilai. Di sini, EXIT_SUCCESS makro, yang didefinisikan sebagai 0.

Jika ada kesalahan dalam program, ketika Anda keluar dari program, akan membawa nilai statusnya EXIT_FAILURE, itu didefinisikan sebagai -1. Oleh karena itu, prosedur di atas dapat ditulis sebagai:

#include <stdio.h>
#include <stdlib.h>

main()
{
   int dividend = 20;
   int divisor = 5;
   int quotient;
 
   if( divisor == 0){
      fprintf(stderr, "除数为 0 退出运行...\n");
      exit(EXIT_FAILURE);
   }
   quotient = dividend / divisor;
   fprintf(stderr, "quotient 变量的值为: %d\n", quotient );

   exit(EXIT_SUCCESS);
}

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

quotient 变量的值为 : 4