我们可以抛出CWin32Error和带有文件名的附加参数吗

时间:2019-04-20 10:46:42

标签: exception mfc throw

我正在使用here进行异常处理。例如,这是来自InstallApplicationFiles的一些代码(此方法尝试将一系列文件从通用数据文件夹复制到用户数据文件夹。它还会检查文件的时间戳记是否都存在):

if (!PathFileExists(strUserFilePath))
{
    // We must copy the default file
    if (!PathFileExists(strCommonFilePath))
    {
        // This should not happen as it is installed by the installer! Raise exception
        throw CWin32Error();
    }

    if (!::CopyFile(strCommonFilePath, strUserFilePath, FALSE))
    {
        // There was a problem copying the file! Raise exception
        throw CWin32Error();
    }
}

呼叫代码:

try
{
    InstallApplicationFiles();
}
catch (CWin32Error e)
{
    // This exception will be raised for PathFileExist, CopyFile, DeleteFile
    CString strError = _T("");
    strError.Format(_T("Installing application files.\n\nError: %s"), (LPCTSTR)e);
    AfxMessageBox(strError, MB_OK | MB_ICONWARNING);
    return FALSE; // Unable to proceed
}

问题在于捕获异常的时间我们不再知道与哪个文件相关的问题。该错误消息仅说明错误是什么,但未说明哪个文件。有没有办法抛出一个带有参数的CWin32Error来说明导致错误的文件?

0 个答案:

没有答案