- 异常有可能导致某些资源没有释放到,这时可以使用using或者finally来释放资源。
- 有些异常的可能会间歇性的发生,不影响业务运行的,可以视为正常的逻辑,那在异常可能发生前,应该使用判断逻辑。
if (conn.State != ConnectionState.Closed) { conn.Close(); }
如果你觉得该异常基本不会发生,那就不用判断了,让它自己抛出来吧。
见仁见智吧!!!
- 在设计一个类、一个方法、一个属性时应尽可能避免异常。有时候可以通过返回默认值或null来避免异常的发生。
客户端获取到null,可以提示用户,服务尚未启动。
- 在.net中实在找不到合适的异常,才自定义。属性(属性实际就是字段的封装方法,语法糖罢了)或方法调用不适当,则会引发 InvalidOperationException 异常。
无效的参数,则引发 ArgumentException 异常或从 ArgumentException 派生的一个预定义类。 - 自定义异常,最后要有这三个构造函数
-
Exception()(使用默认值)。
-
Exception(String),它接受字符串消息。---->Message
-
Exception(String, Exception),它接受字符串消息和内部异常。 ----->第二个参数就是InnerException
-
- 跨程序访问时要注意异常的可访问性,例如A程序访问B程序,B程序返回了一个异常,这时要保证A程序可以识别该异常。(怎么识别呢?A程序和B程序都有这个异常的dll或者...)