尽可能的用校验代码而避免使用异常如果你知道一个可避免的条件可能会出现那就让它避免比如在执行任何操作以前检查空值(VB里是Nothing)这样可以避免使用异常以及性能问题
以下代码
double result =
;
try
{
result = firstVal/secondVal;
}
catch(SystemException e)
{
// handling the zero divided exception
}
应该替换成
double result =
;
if(secondVal != null && secondVal > )
{
result = firstVal/secondVal;
}
else
{
result = SystemDoubleNaN;
}
不要为没有必要的情况(原文reasons)抛出异常再次抛出异常的开销和实例化一个新异常的开销一样的大同时再次抛出异常使程序调试工作增加难度比如
try
{
// Perform some operations in case of throw an exception…
}
catch (Exception e)
{
// Try to handle the exception with e
throw;
}
推荐的处理不同的错误的不同的方法是实现一系列的catch块这看起来好像没有什么但可以让你的异常处理从特殊走向普通比如捕获一个和文件有关的异常明显要比捕获一个FileNotFoundException DirectoryNotFoundException SecurityException IOException UnauthorizedAccessException甚至最后的基类Exception好的多
ADONET 的错误应该通过 SqlException 或 OleDbException来处理
使用ConnectionState属性来检查连接是否可用要比异常处理好的多
要常使用Try/FinallyFinally提供了关闭连接的机会Using语句可以达到同样的效果
用指定的处理程序来处理异常在一些情况下如果你知道一些可能的异常那就用相应的异常处理类比如
try
{}
catch(SqlException sqlexp) // specific exception handler
{}
catch(Exception ex) // Generic exception handler
{}
你的异常处理架构应该可以探测异常并在内部将其覆盖(或是)使用其它异常将其替换或是为监视系统而记录和报告这些信息
推荐大家使用 Microsofts patterns & practices 团队 提供的Exception Management Application Block这是一个简单且可扩展的框架用于记录异常信息到事件文件中你可以自定义它把日志记录到其它数据源中同时不影响你系统的代码Exception Management Application Block都是一些由patterns & practices团队开发的很好的代码并且已经彻底地被Microsoft labs给测试过了
[] []