2012-03-08 9 views
1

ブールを返すことは可能ですか?また、同じメソッド内で例外を再スローすることはできますか? Iveは次のコードを試してみたところ、到達不能なコードが検出された、または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(); 
     } 
    } 
} 

答えて

4

例外がスローされると、現在のメソッドでの処理が終了し、例外が呼び出しスタックを処理します。例外をローカルで処理し、ブール値を返すか、スローしてフロントエンドで処理して処理させます。

+0

ありがとうございました。 –

関連する問題