Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial programming >> Bahasa C

Menguasai Penanganan Kesalahan dalam C: Praktik Terbaik & Teknik

Seperti yang diketahui, pemrograman C tidak menyediakan dukungan langsung untuk penanganan kesalahan tetapi sebagai bahasa pemrograman sistem, ini memberi Anda akses pada tingkat lebih rendah dalam bentuk nilai pengembalian. Sebagian besar panggilan fungsi C atau bahkan Unix mengembalikan -1 atau NULL jika terjadi kesalahan dan mengatur kode kesalahan errno. Ini diatur sebagai variabel global dan menunjukkan bahwa kesalahan terjadi selama panggilan fungsi apa pun. Anda dapat menemukan berbagai kode kesalahan yang didefinisikan dalam file header <error.h>.

Jadi seorang programmer C dapat memeriksa nilai yang dikembalikan dan dapat mengambil tindakan yang sesuai tergantung pada nilai pengembalian. Ini adalah praktik yang baik untuk mengatur errno ke 0 saat menginisialisasi program. Nilai 0 menunjukkan bahwa tidak ada kesalahan dalam program.

errno, perror(). dan strerror()

Bahasa pemrograman C menyediakan fungsi perror() dan strerror() yang dapat digunakan untuk menampilkan pesan teks yang terkait dengan errno.

Mari kita coba mensimulasikan kondisi kesalahan dan mencoba membuka file yang tidak ada. Di sini saya menggunakan kedua fungsi ini untuk menunjukkan penggunaannya, tetapi Anda dapat menggunakan satu atau lebih cara untuk mencetak kesalahan Anda. Poin penting kedua yang perlu diperhatikan adalah Anda harus menggunakan aliran file stderr untuk mengeluarkan 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, "Nilai errno: %d\n", errno); perror("Kesalahan dicetak oleh perror"); fprintf(stderr, "Kesalahan membuka file: %s\n", strerror( errnum )); } else { fclose (pf); } return 0; } 

Ketika kode di atas dikompilasi dan dieksekusi, hasilnya adalah sebagai berikut −

 Nilai errno: 2 Kesalahan dicetak oleh perror: Tidak ada file atau direktori Kesalahan membuka file: Tidak ada file atau direktori 

Kesalahan Pembagian dengan Nol

Ini adalah masalah umum bahwa pada saat membagi bilangan apa pun, programmer tidak memeriksa apakah pembagi adalah nol dan akhirnya menciptakan kesalahan runtime.

Kode di bawah ini memperbaiki ini dengan memeriksa apakah pembagi adalah nol sebelum membagi −

Live Demo
 #include <stdio.h> #include <stdlib.h> main() { int dividend = 20; int divisor = 0; int quotient; if( divisor == 0){ fprintf(stderr, "Pembagian dengan nol! Keluar...\n"); exit(-1); } quotient = dividend / divisor; fprintf(stderr, "Nilai quotient : %d\n", quotient ); exit(0); } 

Ketika kode di atas dikompilasi dan dieksekusi, hasilnya adalah sebagai berikut −

 Pembagian dengan nol! Keluar... 

Status Keluar Program

Ini adalah praktik umum untuk keluar dengan nilai EXIT_SUCCESS dalam kasus program keluar setelah operasi berhasil. Di sini, EXIT_SUCCESS adalah makro dan didefinisikan sebagai 0.

Jika Anda memiliki kondisi kesalahan dalam program Anda dan Anda keluar maka Anda harus keluar dengan status EXIT_FAILURE yang didefinisikan sebagai -1. Jadi mari kita tulis program di atas sebagai berikut −

Live Demo
 #include <stdio.h> #include <stdlib.h> main() { int dividend = 20; int divisor = 5; int quotient; if( divisor == 0) { fprintf(stderr, "Pembagian dengan nol! Keluar...\n"); exit(EXIT_FAILURE); } quotient = dividend / divisor; fprintf(stderr, "Nilai quotient : %d\n", quotient ); exit(EXIT_SUCCESS); } 

Ketika kode di atas dikompilasi dan dieksekusi, hasilnya adalah sebagai berikut −

 Nilai quotient : 4 

Bahasa C

  1. Penanganan File C: Menguasai I/O dengan fopen, fprintf, fread, dan fseek
  2. Menguasai Penanganan Pengecualian Java: Try, Catch, Finally, Throw & Throws Dijelaskan
  3. Menguasai Tingkat Kesalahan Kode ADC: Apa yang Perlu Anda Ketahui
  4. Praktik Terbaik Menyimpan dan Menangani Sabuk Transmisi Daya
  5. Operasi File C# – Panduan Praktis
  6. Menguasai Penanganan Sinyal C++: Pengelolaan Interupsi Aman dan Penutupan Program yang Bersih
  7. Menguasai Penanganan Pengecualian C#: Strategi & Praktik Terbaik
  8. Pengelolaan Exception Python: Panduan Lengkap
  9. Menguasai Keselamatan Pengendalian Bahan: Praktik Terbaik untuk Operasi Efisien dan Tanpa Risiko
  10. Memahami Material Handling: Konsep Kunci & Praktik Terbaik