Contoh program C++ yang menunjukkan pengendalian pengecualian

WBOY
Lepaskan: 2023-09-05 16:53:05
ke hadapan
1230 orang telah melayarinya

Contoh program C++ yang menunjukkan pengendalian pengecualian

Andaikan terdapat fungsi yang mengira beberapa operasi matematik yang kompleks. Walau bagaimanapun, beberapa pengecualian mungkin berlaku semasa operasi. Kita perlu mengendalikan pelbagai jenis pengecualian yang mungkin berlaku dan melakukan perkara berikut.

  • Jika komputer tidak boleh memperuntukkan memori untuk pengiraan, kita mesti mencetak "Kehabisan memori!"
  • Jika sebarang pengecualian berkaitan C++ berlaku, kita mesti mencetak "Pengecualian:" diikuti dengan mesej pengecualian.
  • Jika perkara lain berlaku, kami mencetak "Pengecualian tidak dikendalikan".

Kami mempunyai tatasusunan yang mengandungi sepasang nilai dan menghantarnya kepada fungsi. Jika sebarang pengecualian berlaku, kami mengendalikannya, jika tidak mencetak nilainya.

Kita hanya perlu mengendalikan pengecualian, tanpa mengira mekanisme yang mana fungsi menjana pengecualian.

Jadi jika input ialah arr = {{361643035132, 2297873642249}, {-17, 15}};, maka outputnya ialah -

Memory Low!
Exception: val1 is negative
Salin selepas log masuk

Pasangan nilai pertama terlalu besar untuk dikendalikan, jadi "Keluar of Memory" dicetak. Nilai pertama pasangan nilai kedua ialah nombor negatif. Fungsi yang disediakan tidak dapat mengendalikannya, jadi pengecualian "val1 adalah negatif" dijana/dibuang,

Untuk menyelesaikan masalah ini, kami akan mengikuti langkah berikut −

  • Initialize i := 0, kemas kini apabila i < Naikkan i sebanyak 1), laksanakan −
    • val1 := nilai[i, 0]
    • val2 := nilai[i, 1]
    • cuba,
      • cetak (foo(val1, val2))
    • Tidak dapat memperuntukkan memori (pengecualian bad_alloc ditangkap), kemudian
      • cetak "Kehabisan ingatan!"
    • Jika tidak, jika sebarang pengecualian C++ standard lain ditangkap,
      • cetak "Pengecualian:"
      • cetak butiran pengecualian +
      • #include <iostream>
        #include <exception>
        #include <string>
        #include <stdexcept>
        #include <vector>
        #include <cmath>
        using namespace std;
        
        class Solution {
        private:
           static int value;
        public:
           static int foo(long long val1, long long val2) {
              value += 1;
              if(val1 < 0) {
                 throw std::invalid_argument("val1 is negative");
              }
              vector<int> vectorList(val1, 0);
              int r = -1, c = sqrt(-1);
              if(val2 == 0) throw 0;
              r = (val1 / val2) * r;
              int ans = vectorList.at(val2);
              return r + val1 - val2 * ans;
           }
           static int getVal() {
              return value;
           }
        };
        int Solution::value = 0;
        
        void solve(int t, long int values[][2]) {
           for (int i = 0; i < t; i++) {
              long long val1, val2;
              val1 = values[i][0];
              val2 = values[i][1];
              try {
                 cout << Solution::foo(val1, val2) << &#39;\n&#39;;
              }
              catch (const std::bad_alloc&) {
                 cout << "Memory Low!\n";
              }
              catch (const std::exception& e) {
                 cout << "Exception: " << e.what() << &#39;\n&#39;;
              }
              catch (...) {
                 cout << "Unhandled Exception\n";
              }
           }
        }
        int main() {
           long int arr[][2] = {{361643035132, 2297873642249}, {-17, 15}};
           solve(2, arr);
        }
        Salin selepas log masuk
      • output
      long int arr[][2] = {{361643035132, 2297873642249}, {-17, 15}};
      solve(2, arr);
      Salin selepas log masuk

      Atas ialah kandungan terperinci Contoh program C++ yang menunjukkan pengendalian pengecualian. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:tutorialspoint.com
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan