繁体   English   中英

MFC库中CFile抛出的可能异常

[英]Possible exception thrown by CFile in MFC Library

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

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

1个

try {
     if(file.Open(strPath,Cfile::modeRead|CFile::shareDenyNone)){
     file.Read(strKey, dataLength);
     file.Close();

   }
}
catch (CFileException& e) {
}

2

try {
    // same code above
}
catch (CFileException *e) {
}
  1. 两种异常处理之间有什么区别?
  2. CFile类的成员函数可能引发哪些错误?
  3. 没有。 捕获CFile类的成员函数引发的异常的一种可能方法?

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

CException ex;
throw ex; // CException 

或通过指针:

CException *ex = new CException();
throw ex; // CException *

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

catch(CException &e) // when throwing CException

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

try {
   AfxThrowUserException();
}
catch( CException* e ) {
   e->Delete();
}

不要忘记在事后删除异常,否则每次引发异常时都会出现少量内存泄漏。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM