1. 程式人生 > >134.異常類的處理

134.異常類的處理

mes 越界 pre pan AI list ace get urn

  • 異常類
     1 #pragma once
     2 #include <initializer_list>
     3 using namespace std;
     4 
     5 class memerror
     6 {
     7 };
     8 
     9 class outerror
    10 {
    11 };
    12 
    13 class safeintarray
    14 {
    15 private:
    16     int *p;
    17     int n;
    18 
    19 public:
    20     safeintarray(int length);
    21     safeintarray(initializer_list<int
    > mylist); 22 safeintarray(); 23 int &operator [](int num); 24 ~safeintarray(); 25 };

  •  1 #include "safeintarray.h"
     2 
     3 
     4 
     5 safeintarray::safeintarray(int length)
     6 {
     7     if (length <= 0)
     8     {
     9         throw memerror();
    10     }
    11     this->p = new int[length] {0
    }; 12 this->n = length; 13 } 14 15 safeintarray::safeintarray(initializer_list<int> mylist) 16 { 17 } 18 19 safeintarray::safeintarray() 20 { 21 } 22 23 int & safeintarray::operator[] (int num) 24 { 25 // TODO: 在此處插入 return 語句 26 if (num<0 || num>this->n - 1) 27 {
    28 throw outerror(); 29 } 30 31 return this->p[num]; 32 } 33 34 35 safeintarray::~safeintarray() 36 { 37 }

  • main.cpp
     1 #include <iostream>
     2 #include "safeintarray.h"
     3 using namespace std;
     4 
     5 void main()
     6 {
     7     try
     8     {
     9         safeintarray s1(5);
    10 
    11         cout << s1[5] << endl;
    12     }
    13     catch(outerror e)
    14     {
    15         cout << "內存分配錯誤" << endl;
    16     }
    17     catch (memerror e)
    18     {
    19         cout << "越界" << endl;
    20     }
    21 
    22     cin.get();
    23 }

134.異常類的處理