C++自定义异常的作用 15

#include<iostream>#include<vector>#include<stdexcept>#include<string>usingnamespacest... #include <iostream>
#include <vector>
#include <stdexcept>
#include <string>
using namespace std;
template <typename T>
class compositor { //定一个模版排序类,compositor排序
private:
T x;
T y;
T z;
vector<T> va; //用于存储输入数,数目没确定
public:
compositor() {};
compositor(T x,T y,T z);
~compositor() {}
void setva();//VA初始化
void vmath();//用于VA排序
void print();//输出VECTOR容器
};
template <typename T>
void compositor<T>::setva() {
T putn;
while(cin>>putn) {
//if(sizeof(T) == sizeof(putn))
va.push_back(putn);
}
}

main() {
compositor<int> co;
co.setva();

return 0;
}

在MAIN函数中compositor模版函数我是定义INT类型,但如果输入字符型就会终止程序,如何防止用户输入字符型呢?应该怎么编写异常?
还有就是我试验过一场只能在MAIN中抛出,在STVA中抛出的异常捕捉不了如:
template <typename T>
void compositor<T>::setva() {
T putn;
try{
while(cin>>putn) {
if(sizeof(T) == sizeof(putn))
throw exception();
va.push_back(putn);
}
catch(exception ex)
cout<<"sf"<<endl;
}
}
但这是捕捉不了一场要在MAIN调用函数中才能捕捉到为什么呢?
还有就是自定义异常类,类中该写什么
EG:class Texception:public exception {
这里该写些什么呢?自定义异常类型作用是什么?
}
不知道我这样说,大家懂不懂
展开
 我来答
疾似云流
2009-09-19 · TA获得超过1159个赞
知道小有建树答主
回答量:1093
采纳率:0%
帮助的人:512万
展开全部
cin>>putn好像不抛出异常,只能检查流状态(iostate)
STL考虑效率的原因只有很少地方才抛出异常。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式