一C++异常处理实例为何出现很多错误?求解?
#include <iostream>
using namespace std;
class divzero{};
class arrayover{};
int divide(int a,int b)
{
if(0 == b)
throw divzero();
return a/b;
}
void input(char c[],int n)
{
int i;
for(i = 0;i <= n;i++)
{
cout<<strlen(c)<<endl;
if(i > 5)
throw arrayover();
cin>>c[i];
}
}
int main()
try
{
char cc[6] = "";
input(cc,10);
return 0;
}catch(divzero){cout<<"divide 0"<<endl;return 0;}
catch(arrayover){cout<<"arrayover"<<endl;return 0;}
[解决办法]
cout<<strlen(c)<<endl; 会越界哦。
#include <iostream>using namespace std;class divzero{};class arrayover{};int divide(int a,int b){if(0 == b)throw divzero();return a/b;}void input(char c[],int n){int i;for(i = 0;i <= n;i++){cout<<strlen(c)<<endl;if(i > 5)throw arrayover();cin>>c[i];}}int main()try{char cc[6] = "";input(cc,10); return 0;}catch(divzero){cout<<"divide 0"<<endl;return 0;}catch(arrayover){cout<<"arrayover"<<endl;return 0;}
[解决办法]
#include <iostream>using namespace std;class divzero{};class arrayover{};int divide(int a,int b){if(0 == b)throw divzero();return a/b;}void input(char c[],int n){int i;for(i = 0;i <= n;i++){cout<<strlen(c)<<endl;if(i > 5)throw arrayover();cin>>c[i];}}int main(){try{char cc[6] = "";input(cc,10); return 0;}catch(divzero){cout<<"divide 0"<<endl;return 0;}catch(arrayover){cout<<"arrayover"<<endl;return 0;}}