vc try ...捕捉所有异常的问题 vc try ...捕捉所有异常的问题我想在VC++2005 写的应用程序代码中,捕捉异常, 正确的写法应如何写?在VC代码中捕捉异常的用法的使用数量 比其它语言(delphi等)写的代码要少,这是为什么?是不是C++更安全? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 try{ ... ... 某种有可能发生例外的处理(); ... ...}catch(CException *e){ e->显示例外内容等的処理(); e->Delete();}/////////////////////////>>是不是C++更安全?我觉得C++不会提高安全形,用和不用是习惯问题。CException类的派生与使用(VC++)http://www.softist.com/programemo/cexception/cexception.htm try{***}catch(CException *e)//捕捉一个CException类型的异常{***}catch(...) //捕捉剩下的所有的异常{***} try { ... ... 某种有可能发生例外的处理(); ... ... } catch(CException *e) { e->显示例外内容等的処理(); e->Delete(); } -----> 在我的代码中捕捉不到错误码. 抓不着的原因是没有被抛出来。假如我们自己抛出来一个“内存不足”,谎报军情。↓↓↓void Test1(){ AfxThrowMemoryException();}void CXxxxDlg::OnButton1() { try { Test1(); } catch (CException* e) { e->ReportError(); e->Delete(); }} 用词不准请原谅。“例外”应该是“异常”throw+try+catch 提供了一个特殊通道是子程序一下子跳到上层程序中去。不过,百度字典对exception的解释也是“例外”。哈哈。 try { wcscpy_s(m_szNameBuf, sizeof(m_szNameBuf), pInforSMS->names[0]); } catch(CException *e) { //e->显示例外内容等的処理(); //e->Delete(); MessageBox(_T(" Error ")); } wcscpy_s 出错时,捕捉不到这个错误。如何捕捉 wcscpy_s 出错的信息? wcscpy_s没有扔出“例外”吧?底层函数应该没有扔“例外”的做法,MFC层的程序大量使用扔“例外”的做法吧?试一下其他方法,比如,GetLastError等等。个人意见,供参考。 wcscpy_s(m_szNameBuf, sizeof(m_szNameBuf), pInforSMS->names[0]); 这样的稍底层一些的函数的错误捕捉不到,会给应用程序增加许多 隐患。正确的方式应如何处理? errno_t wcscpy_s()出错时有错误的返回值 ERANGE,EINVAL。 TCHAR names[50][12];TCHAR m_szNameBuf[100][30]; if (wcscpy_s(m_szNameBuf[i], sizeof(m_szNameBuf[i]), names[i]) == 0) { // MessageBox(L" wcscpy_s ok ");}else{ // MessageBox(L" wcscpy_s error ");}wcscpy_s 正确时,有提示; 出错时,没提示, 直接退出函数. C#版 try-catch-finallytry { *** } catch(Exception ex)//捕捉一个CException类型的异常 { *** //有异常时执行该代码} finally{//无论有无异常都执行//释放资源} debug没问题,运行出红叉的问题 内存不足 (求助)制作ActiveX控件编译时注册失败(同时调用第三方DLL) 急急急!!!关于大整数乘法的问题 VC6.0调用WebService,返回的结果出错"soap:Server",怎么解决? 请问如何实现橡皮筋功能? 请jennifergiant来领分,谢谢 C++编程思想 关于虚拟内存的问题 COM接口能否知道它的调用端的关闭时机 书上的一个顺序表插入程序怎么会编译不了呢? 如何有效退出线程!急!
{
... ...
某种有可能发生例外的处理();
... ...
}
catch(CException *e)
{
e->显示例外内容等的処理();
e->Delete();
}/////////////////////////
>>是不是C++更安全?
我觉得C++不会提高安全形,用和不用是习惯问题。CException类的派生与使用(VC++)
http://www.softist.com/programemo/cexception/cexception.htm
{
***
}
catch(CException *e)//捕捉一个CException类型的异常
{
***
}
catch(...) //捕捉剩下的所有的异常
{
***
}
{
... ...
某种有可能发生例外的处理();
... ...
}
catch(CException *e)
{
e->显示例外内容等的処理();
e->Delete();
}
-----> 在我的代码中捕捉不到错误码.
假如我们自己抛出来一个“内存不足”,谎报军情。↓↓↓void Test1()
{
AfxThrowMemoryException();
}void CXxxxDlg::OnButton1()
{
try
{
Test1();
}
catch (CException* e)
{
e->ReportError();
e->Delete();
}
}
throw+try+catch 提供了一个特殊通道是子程序一下子跳到上层程序中去。
不过,百度字典对exception的解释也是“例外”。哈哈。
try
{
wcscpy_s(m_szNameBuf, sizeof(m_szNameBuf), pInforSMS->names[0]);
}
catch(CException *e)
{
//e->显示例外内容等的処理();
//e->Delete();
MessageBox(_T(" Error "));
} wcscpy_s 出错时,捕捉不到这个错误。如何捕捉 wcscpy_s 出错的信息?
底层函数应该没有扔“例外”的做法,MFC层的程序大量使用扔“例外”的做法吧?
试一下其他方法,比如,GetLastError等等。
个人意见,供参考。
出错时有错误的返回值 ERANGE,EINVAL。
TCHAR names[50][12];
TCHAR m_szNameBuf[100][30]; if (wcscpy_s(m_szNameBuf[i], sizeof(m_szNameBuf[i]), names[i]) == 0)
{
// MessageBox(L" wcscpy_s ok ");
}
else
{
// MessageBox(L" wcscpy_s error ");
}
wcscpy_s 正确时,有提示; 出错时,没提示, 直接退出函数.
{
***
} catch(Exception ex)//捕捉一个CException类型的异常
{
*** //有异常时执行该代码
} finally
{
//无论有无异常都执行
//释放资源
}