返回bool并重新抛出异常

时间:2012-03-08 12:15:02

标签: c# c#-4.0 exception-handling

是否可以返回bool并在同一方法中重新抛出异常?香港专业教育学院尝试使用以下代码,它一直说检测到无法访问的代码或我不能退出finally块。

public bool AccessToFile(string filePath)
{
    FileStream source = null;
    try
    {
        source = File.OpenRead(filePath);
        source.Close();
        return true;
    }
    catch (UnauthorizedAccessException e)
    {
        string unAuthorizedStatus = "User does not have sufficient access privileges to open the file: \n\r" + filePath;
        unAuthorizedStatus += e.Message;
        MessageBox.Show(unAuthorizedStatus, "Error Message:");
        throw;
    }
    catch (Exception e)
    {
        string generalStatus = null;

        if (filePath == null)
        {
            generalStatus = "General error: \n\r";
        }
        else
        {
            generalStatus = filePath + " failed. \n\r";
            generalStatus += e.Message;
        }

        MessageBox.Show(generalStatus, "Error Message:");
        throw;
    }
    finally
    {
        if (source != null)
        {
            source.Dispose();
        }
    }
}

1 个答案:

答案 0 :(得分:4)

一旦抛出异常,当前方法中的处理就会完成,异常会在调用堆栈中起作用。要么在本地处理异常,然后返回你的布尔值,要么抛出它们,让它们冒泡并在前端处理它们。