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