关于catch(...)的一个问题 我想捕捉所有的异常,并返回相关的文字作物信息try{...}catch(XXX){}catch(...){}对于最后一个catch,我如何得到原来的错误信息? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 呵呵,笨方法int i = 0;try{...}catch(XXX){i++;...;记住错误;}catch(...){i++;...;记住错误;}if( i ){ 发送全部错误信息 return;} 对应每一种异常,写异常类,并且用全局函数log,例如:try{}catch(xx e){logerror1(xx e,.....);}catch(xx f){logerror2(xx f,.....);} log可以做成在窗体中显示,给logerror传一个参数,例如CListBox*,or CListCtrl*. 多谢各位,我的意思是:catch(...)能捕捉到我写程序时不能预料的异常,但是我想能不能当发生这些我不能预料的异常时,我能不能得到和这个异常相关的错误信息,以使我知道问题大概出在哪里 在你的异常类中记录啊!比如说你的异常类中有一个函数,两个成员!class CXXException:public CException{public: GetErrorMessage(CString xx);//xx记录异常内容及Error noprivate: int m_nError; //记录Error number CString m_strMessage;//记录Error Message}CXXException::CXXException(char* pchMessage){ m_strMessage = pchMessage; m_nError = GetLastError();}CXXException::GetErrorMessage(CString strErr){ //记录错误号及错误信息到参数strErr中}当你的函数发生异常时,抛出异常:if( false == connect(srv,port,...) )//"只是举个例子" throe new CXXException("连接出错!");这样在你的程序里:try{...}catch(CXXException e){ logCXXException(参数一你要输出到的控件,参数二:e,...其它消息)}logCXXException是真正干活的,它把你想要的东西输出。太多了,太烦了,希望你能看得懂。。 谢谢楼上主要是用GetLastError(),对吧?如果我用的不是api,GetLastError()能返回错误吗? 【VC++菜鸟】给出几个点坐标求多边形面积?程序写到一半写不出来了,应该怎么修改,才能出结果呢? 请教:OnEraseBkgnd()重绘了窗口背景,但是没有重绘某些控件的背景,如何让窗口背景和控件背景都成为我需要的颜色 请假:ATL组件中怎么 返回ADO记录集,急! socket编程,客户端向服务器传递的数据类型的问题 请问给字符串加密的方法 怎样用MessageBox显示字符串和变量,例如:x=5,5是传进来的 _SIMULATE是什么东东?????????????????????? 到底什么是背景色??? 急救!!!关于对话框中编辑框重画问题 送分,关于对话框 活动窗口 做属性页的问题
int i = 0;
try
{
...
}
catch(XXX)
{
i++;
...;
记住错误;
}
catch(...)
{
i++;
...;
记住错误;
}if( i )
{
发送全部错误信息
return;
}
try
{}
catch(xx e)
{
logerror1(xx e,.....);
}
catch(xx f)
{
logerror2(xx f,.....);
}
catch(...)能捕捉到我写程序时不能预料的异常,但是我想能不能当发生这些我不能预料的异常时,我能不能得到和这个异常相关的错误信息,以使我知道问题大概出在哪里
比如说你的异常类中有一个函数,两个成员!
class CXXException:public CException{
public:
GetErrorMessage(CString xx);//xx记录异常内容及Error no
private:
int m_nError; //记录Error number
CString m_strMessage;//记录Error Message
}
CXXException::CXXException(char* pchMessage)
{
m_strMessage = pchMessage;
m_nError = GetLastError();
}
CXXException::GetErrorMessage(CString strErr)
{
//记录错误号及错误信息到参数strErr中
}
当你的函数发生异常时,抛出异常:
if( false == connect(srv,port,...) )//"只是举个例子"
throe new CXXException("连接出错!");
这样在你的程序里:
try{
...
}
catch(CXXException e)
{
logCXXException(参数一你要输出到的控件,参数二:e,...其它消息)
}
logCXXException是真正干活的,它把你想要的东西输出。
太多了,太烦了,希望你能看得懂。。
主要是用GetLastError(),对吧?
如果我用的不是api,GetLastError()能返回错误吗?