Rumah >pembangunan bahagian belakang >C++ >Contoh program C++ yang menunjukkan pengendalian pengecualian

Contoh program C++ yang menunjukkan pengendalian pengecualian

WBOY
WBOYke hadapan
2023-09-05 16:53:051265semak imbas

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

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
  • 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);
      }
    • output
    long int arr[][2] = {{361643035132, 2297873642249}, {-17, 15}};
    solve(2, arr);

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

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam