CUserException

抛 出 一 个 CUserException 来 停 止 一 个 结 束 - 用 户 操 作 。 当 你 想 要 对 应 用 程 序 指定 的 异 常 使 用 抛 出 / 捕 获 异 常 机 制 时 , 可 以 使 用 CUserException 。 在 类 名 中 的“ User” 可 以 解 释 为 “ 我 的 用 户 做 了 某 些 我 不 想 处 理 的 异 常 事 情 ” 。

在 调 用 全 局 函 数 AfxMessageBox 之 后 , 通 常 会 抛 出 一 个 CUserException 来 通 知用 户 操 作 失 败 了 。 当 你 编 写 一 个 异 常 处 理 程 序 时 , 由 于 用 户 已 经 获 得 了 失 败 的通 知 , 所 以 你 要 特 别 处 理 这 个 异 常 。 在 某 些 情 况 下 , 框 架 会 抛 出 这 个 异 常 。 你可 以 自 己 抛 出 一 个 CUserException , 以 警 告 用 户 , 然 后 调 用 全 局 函 数AfxThrowUserException 。

在 下 面 的 示 例 中 , 一 个 函 数 包 含 的 操 作 可 能 会 失 败 , 警 告 用 户 并 抛 出 一 个

CUserException 。 调 用 函 数 捕 获 这 个 异 常 并 特 别 处 理 它 :

void DoSomeOperation( )

{

// 如 果 出 错 则 处 理

AfxMessageBox( "The x operation failed" ); AfxThrowUserException( );

}

BOOL TrySomething( )

{

TRY

{

// Could throw a CUserException or other exception. DoSomeOperation( );

}

CATCH( CUserException, e )

{

return FALSE; // User already notified.

}

AND_CATCH( CException, e )

{

// For other exception types, notify user here.

AfxMessageBox( "Some operation failed" ); return FALSE;

}

END_CATCH

return TRUE; // No exception thrown.

}

有 关 使 用 CUserException 的 更 多 信 息 , 参 见“ V isual C++ 程 序 员 指 南 ” 中 的“ 异常 ” 。

#include <afxwin.h>

请 参 阅 Exception, AfxMessageBox, AfxThrowUserException