簡體   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