Возврат bool и отбрасывание исключения - PullRequest
1 голос
/ 08 марта 2012

Можно ли вернуть 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 Ответ

4 голосов
/ 08 марта 2012

Как только вы генерируете исключение, обработка в вашем текущем методе заканчивается, и исключение обрабатывает стек вызовов.Либо обработайте ваши исключения локально, а затем верните логическое значение, либо бросьте их, и пусть они всплывают и обрабатывают их на переднем конце.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...