在 winrt 中遵循 SOLID 原则时捕获异常
catching exceptions while following SOLID principles in winrt
public async Task<StorageFile> GetFile( string fileName )
{
// throw new NotImplementedException();
var _folder = ApplicationData.Current.LocalFolder;
try
{
var _file = await _folder.GetFileAsync(fileName);
return _file;
}
catch (FileNotFoundException)
{
//notify user about the exception.
}
return null;
}
这是我的 class 中唯一从本地存储中检索文件的方法。我想通知用户任何异常。如果我尝试在 catch 语句中创建一个消息框,那将打破 solid 的第一条单一责任规则。
我应该如何设置 class 以便我的其他处理程序 class 可以捕获异常并采取所需的操作?我的第一个想法是事件处理程序,但有没有更好的技术?
public async Task<StorageFile> GetFile( string fileName )
{
// throw new NotImplementedException();
var _folder = ApplicationData.Current.LocalFolder;
try
{
var _file = await _folder.GetFileAsync(fileName);
return _file;
}
catch
{
throw;
}
return null;
}
不是在这里捕获异常,而是简单地将它扔给调用它的控制器。确保有一个 try{}catch{} 围绕对此方法的调用,您可以在那里处理异常(即显示消息框)。
public async Task<StorageFile> GetFile( string fileName )
{
// throw new NotImplementedException();
var _folder = ApplicationData.Current.LocalFolder;
try
{
var _file = await _folder.GetFileAsync(fileName);
return _file;
}
catch (FileNotFoundException)
{
//notify user about the exception.
}
return null;
}
这是我的 class 中唯一从本地存储中检索文件的方法。我想通知用户任何异常。如果我尝试在 catch 语句中创建一个消息框,那将打破 solid 的第一条单一责任规则。
我应该如何设置 class 以便我的其他处理程序 class 可以捕获异常并采取所需的操作?我的第一个想法是事件处理程序,但有没有更好的技术?
public async Task<StorageFile> GetFile( string fileName )
{
// throw new NotImplementedException();
var _folder = ApplicationData.Current.LocalFolder;
try
{
var _file = await _folder.GetFileAsync(fileName);
return _file;
}
catch
{
throw;
}
return null;
}
不是在这里捕获异常,而是简单地将它扔给调用它的控制器。确保有一个 try{}catch{} 围绕对此方法的调用,您可以在那里处理异常(即显示消息框)。