Menangkap Bahagi dengan Pengecualian Sifar
Apabila cuba membahagi dengan sifar dalam C , ia bukan automatik untuk pengkompil atau masa jalan membuang pengecualian . Tingkah laku tidak ditentukan, yang bermaksud ia boleh menyebabkan pengecualian atau hasil lain yang tidak dapat diramalkan.
Dalam coretan kod yang disediakan:
int i = 0; cin >> i; try { i = 5/i; } catch (std::logic_error e) { cerr << e.what(); }
Kod tidak akan menangkap sebarang pengecualian apabila cuba membahagikan dengan sifar kerana integer bahagi dengan sifar tidak dianggap sebagai pengecualian dalam standard C .
Untuk mengendalikan ini, anda perlu secara manual semak keadaan bahagi dengan sifar dan buang pengecualian sewajarnya. Piawaian C tidak mentakrifkan pengecualian secara eksplisit untuk bahagi dengan sifar, jadi anda boleh memilih untuk membuang pengecualian seperti:
Berikut ialah coretan kod yang diubah suai yang menunjukkan membaling bahagi dengan pengecualian sifar:
int intDivEx(int numerator, int denominator) { if (denominator == 0) throw std::overflow_error("Divide by zero exception"); return numerator / denominator; } try { i = intDivEx(5, 0); // Will throw an overflow_error exception } catch (std::overflow_error &e) { cerr << e.what() << endl; }
Dalam contoh ini, fungsi intDivEx menyemak pembahagian dengan sifar dan membuang pengecualian std::overflow_error jika ditemui. Ini membolehkan anda mengendalikan pengecualian dalam kod anda.
Atas ialah kandungan terperinci Bagaimana Mengendalikan Ralat Bahagi-dengan-Sifar dengan Betul dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!