Try-Catch机制使用场景
(一)在什么场景下加Try-Catch机制
1)以业务逻辑功能为单位,在最上层加Try-Catch机制。为什么要这样做呢?这主要是增加程序的健壮性,防止因抛出异常过多,导致程序崩溃。
try
{
//业务逻辑功能
//......
}
catch (Exception ex)
{
//记录日志
//......
}
2)底层代码,在可能出错的地方加Try-Catch机制,用Catch侦测具体的异常,然后就具体的异常,采取相应的解决方案。
try
{
sent += sendSAEA.AcceptSocket.Send(buffer, sent, size - sent, SocketFlags.None);
}
catch (ObjectDisposedException ex) //Socket 已关闭
{
break;
}
catch (SocketException ex)
{
//socket异常,等待后继续尝试发送
Thread.Sleep(this.socketListenerSettings.MSDelayForNextSend);
}
catch (Exception ex)
{
this.SaveLog("Send方法出错,错误描述为:" + ex.Message.ToString());
break;
}
3)底层代码,在需异常追踪时加Try-Catch机制,在Catch块中抛出自定义异常,调试时可迅速定位到错误代码段。
try
{
//底层代码
//......
}
catch (Exception ex)
{
throw new Exception("xxx方法出错,描述:" + ex.Message.ToString());
} |