是否可以返回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();
}
}
}
答案 0 :(得分:4)
一旦抛出异常,当前方法中的处理就会完成,异常会在调用堆栈中起作用。要么在本地处理异常,然后返回你的布尔值,要么抛出它们,让它们冒泡并在前端处理它们。