
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 {
这里该写些什么呢?自定义异常类型作用是什么?
}
不知道我这样说,大家懂不懂 展开
#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 {
这里该写些什么呢?自定义异常类型作用是什么?
}
不知道我这样说,大家懂不懂 展开
1个回答
展开全部
cin>>putn好像不抛出异常,只能检查流状态(iostate)
STL考虑效率的原因只有很少地方才抛出异常。
STL考虑效率的原因只有很少地方才抛出异常。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询