返回bool并重新引发异常
本文关键字:新引发 异常 bool 返回 | 更新日期: 2023-09-27 18:27:04
是否可以在同一方法中返回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();
}
}
}
一旦抛出异常,当前方法中的处理就会完成,并且异常会进入调用堆栈。要么在本地处理异常,然后返回布尔值,要么抛出它们,让它们冒泡起来,在前端处理它们。