标签:
原文: 《Best Practices for Excetpions》
链接:https://msdn.microsoft.com/en-us/library/seyhszts(v=vs.110).aspx
译文:
设计优秀的应用程序能够处理运行过程中出现的异常和错误以避免应用程序崩溃。这篇文章描述了关于处理与创建异常的最佳实践。
if (conn.State != ConnectionState.Closed) { conn.Close(); }
如果上面的代码使用异常处理模型,则如下面的例子所示。使用try/catch 块来包裹连接检查,如果连接没有关闭成功,则抛出异常。
try { conn.Close(); } catch (InvalidOperationException ex) { Console.WriteLine(ex.GetType().FullName); Console.WriteLine(ex.Message); }
是在编程时使用条件检查还是使用异常处理,这取决于你的预期判断——非预期情况是否经常出现。
下节内容包含了创建自己的异常、以及这些异常该在合适被抛出的指南。如果向得到更加详细的参考,可以查看《异常设计准则》。
class FileRead { public void ReadAll(FileStream fileToRead) { // This if statement is optional // as it is very unlikely that // the stream would ever be null. if (fileToRead == null) { throw new System.ArgumentNullException(); } int b; // Set the stream position to the beginning of the file. fileToRead.Seek(0, SeekOrigin.Begin); // Read each byte to the end of the file. for (int i = 0; i < fileToRead.Length; i++) { b = fileToRead.ReadByte(); Console.Write(b.ToString()); // Or do something else with the byte. } } }
public class MyFileNotFoundException : Exception { }
class FileReader { private string fileName; public FileReader(string path) { fileName = path; } public byte[] Read(int bytes) { byte[] results = FileUtils.ReadFromFile(fileName, bytes); if (results == null) { throw NewFileIOException(); } return results; } FileReaderException NewFileIOException() { string description = "My NewFileIOException Description"; return new FileReaderException(description); } }
同样也可以选择使用异常类的构造函数来创建异常,但这更适合像ArgumentException这样的全局异常类。
标签:
原文地址:http://www.cnblogs.com/jjseen/p/5922852.html