首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MFC库中CFile引发的可能异常

MFC库中CFile引发的可能异常
EN

Stack Overflow用户
提问于 2015-05-21 10:05:16
回答 1查看 1.7K关注 0票数 0

目前,我正在研究使用MFC中的CFile类打开文本文件的一些代码。

我在代码中发现了两种错误处理:这只是示例,因为发布代码是保密的。只需想一想,try语句的主体只包含CFile类的成员函数。

1

代码语言:javascript
复制
try {
     if(file.Open(strPath,Cfile::modeRead|CFile::shareDenyNone)){
     file.Read(strKey, dataLength);
     file.Close();

   }
}
catch (CFileException& e) {
}

2

代码语言:javascript
复制
try {
    // same code above
}
catch (CFileException *e) {
}
  1. 这两种异常处理有什么区别?
  2. CFile类的成员函数可能引发哪些错误?
  3. 捕获CFile类的成员函数引发的异常的第一种方法可行吗?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-21 11:47:58

您可以以两种方式按值抛出异常对象:

代码语言:javascript
复制
CException ex;
throw ex; // CException 

或者通过指针:

代码语言:javascript
复制
CException *ex = new CException();
throw ex; // CException *

在捕获异常时,可以捕获抛出的相应类型,即指针或值。为了避免复制,我们通常使用引用按值捕获:

代码语言:javascript
复制
catch(CException &e) // when throwing CException

MFC通过指针抛出异常,请参阅https://msdn.microsoft.com/en-us/library/0e5twxsh.aspx

代码语言:javascript
复制
try {
   AfxThrowUserException();
}
catch( CException* e ) {
   e->Delete();
}

不要忘了以后删除异常,否则每次抛出异常时都会有一个小内存泄漏。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30370579

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档