try 〜 catchを使用した例外処理


  品質のよいソフトを作成するためには、例外処理は必須の要素です。
そこで、try 〜 catchを使用した例外処理の方法を説明します。

【try 〜 catchの構文】

  try{

      通常処理

  }
  catch(例外クラス*){

      例外処理

  }

例外をスローしたい場合は、throwを使用します。

【throwの構文】

  throw(例外クラス)

  例外クラスは省略可能


例外クラス
CMemoryExceptionメモリ不足例外
CFileExceptionファイル例外
CArchiveExceptionアーカイブ/シリアル化例外
CNotSupportedExceptionサポートされていないサービスを要求されたときの応答
CResourceExceptionWindows リソース割り当て例外
CDaoExceptionデータベース例外 (DAO クラス)
CDBExceptionデータベース例外 (ODBC クラス)
COleExceptionOLE 例外
COleDispatchExceptionディスパッチ (オートメーション) 例外
CUserExceptionメッセージ ボックスでユーザーに警告を与えてから汎用CExceptionをスローする例外
CInternetExceptionインターネットの例外 (Internet クラスでの例外状態)
PS.例外クラスの詳細はMSDNを参照して下さい。 【サンプル】 AfxMessageBoxでエラー・メッセージ出力 void CVc_tryDlg::OnButton1() { try{ //通常処理 CString strBuffer; CStdioFile fin("C:\\ErrTest.xxx", CFile::modeRead); fin.ReadString(strBuffer); fin.Close(); } catch(CFileException* err){ //例外処理 switch(err->m_cause){ case CFileException::fileNotFound: AfxMessageBox("ファイルが存在しません。"); break; default: AfxMessageBox("エラーが発生"); } } } throwによるエラー・メッセージ出力 void CVc_tryDlg::OnButton2() { try{ //通常処理 CString strBuffer; CStdioFile fin("C:\\ErrTest.xxx", CFile::modeRead); fin.ReadString(strBuffer); fin.Close(); } catch(CFileException* err){ //例外のスロー throw; } }