显然,许多应用程序需要处理文件并向用户显示错误.然而,System.IO.File类的成员抛出了很多例外.这些仅适用于ReadAllText:
那么如何抓住它们并将其显示给用户而不会吞下其他异常?
显然,通过完美的编码,您可以消除这些2:
如果你写了一个(可能是痛苦的)检查,你可以消除PathTooLongException.但是为什么要复制用于检查Microsoft编写的代码?
但即使您进行了所有检查,其他例外仍然可能发生:
打开文件时可以删除文件和文件夹,安全权限可以更改等.
除了向用户显示消息之外,我没有看到您在这些场景中可以做什么.你要找到操作系统找不到的目录吗?修复权限?将代码注入操作系统以支持不支持的操作?大声笑我所看到的可能是显示错误信息.
因此,如果每次打开文件读取文本时都必须捕获所有这些异常,那么我的代码必须很长且重复,除非我通过捕获异常来吞下异常.
创建FileException并捕获在实际处理文件时可能出现的所有异常是一种好习惯吗?我的想法是:
public class FileException : Exception
{
public FileException( Exception e )
: base( e.Message, e.InnerException )
{
}
}
public static class FileNoBS
{
public static string ReadAllText2( string path )
{
try
{
return File.ReadAllText( path );
}
catch ( ArgumentNullException e )
{
throw new FileException( e );
}
catch …Run Code Online (Sandbox Code Playgroud)