exch.cpp
#include <stdexcept> #include <iostream> using namespace std; class base//:public exception { private: double x; double y; public: explicit base(double a,double b):x(a),y(b){}; virtual void show()const { cout<<x<<" and "<<y<<" "; } }; class bad_hmean:public base {; public: explicit bad_hmean(double a,double b):base(a,b) {}; virtual void show()const { base::show(); cout<<"should not be x=-y "<<endl; } }; class bad_gmean:public base { public: explicit bad_gmean(double a,double b):base(a,b){}; virtual void show()const { base::show(); cout<<"should be >=0"<<endl; } };
main153.cpp
#include <iostream> #include "exch.cpp" using namespace std; double hmean(double x,double y) { //if(x=-y)别写成了我这样哈 if(x==-y) throw bad_hmean(x,y); else return 2.0*x*y/(x+y); }; double gmean(double x,double y) { if(x<0||y<0) throw bad_gmean(x,y); else return sqrt(x*y); }; void main153() { double x,y,z; cout<<"Enter two numbers:"; while(cin>>x>>y) { try{ z=hmean(x,y); cout<<"Harmonic mean of "<<x<<" and "<<y <<" is "<<z<<endl; cout<<"Geometric mean of "<<x<<" and "<<y <<" is "<<gmean(x,y)<<endl; cout<<"Enter the next set of numbers <q to quit>:"; } catch(base &b) { b.show(); //h.what(); //cout<<h.what()<<endl; } /* catch(bad_hmean &h)//会在这里捕获 { h.show(); }*/ catch(bad_gmean &g) { g.show(); //cout<<g.what()<<endl; } cin.get(); } cout<<"Bye"<<endl; cin.get(); }
——————————————————————————————————————————————————
//写的错误或者不好的地方请多多指导,可以在下面留言或者给我发邮件,指出我的错误以及不足,以便我修改,更好的分享给大家,谢谢。
转载请注明出处:https://www.royalchen.com/
author:royalchen
Email:royalchen@royalchen.com
———————————————————————————————————————————————————