#include<iostream>
using namespace std;
int main()
{
int a,b;
char tmp[]="haha";
double total=1.0;
cin>>a>>b;
if(b>0){
for(int i=0;i<b;i++){
total*=a;
}
}else if(b<0){
try
{
if(a==0){
throw tmp;
}
for(int i=0;i<-b;i++){
total*=a;
}
total=1/total;
}
catch(char*){
cerr<<"error\n";
return 1;
}
}else{
if(a==0){
throw a;
}else{
total=1;
using namespace std;
int main()
{
int a,b;
char tmp[]="haha";
double total=1.0;
cin>>a>>b;
if(b>0){
for(int i=0;i<b;i++){
total*=a;
}
}else if(b<0){
try
{
if(a==0){
throw tmp;
}
for(int i=0;i<-b;i++){
total*=a;
}
total=1/total;
}
catch(char*){
cerr<<"error\n";
return 1;
}
}else{
if(a==0){
throw a;
}else{
total=1;
}
}
cout<<total<<endl;
return 0;
}
在可能出错的代码前后加上try语句,在可能错误语句里用throw丢出一个变量(无限制),然后用catch捕捉这个变量类型