异常处理
ClownFish会在以下场景中自动记录异常日志
- 处理HTTP请求过程中(HttpAction)
- 处理消息过程中(MessageHandler)
- 后台任务中(BackgroundTask)
所以,绝大多数情况下是不需要捕获异常的。
将异常输出到控制台
在某些场景下如果需要小范围的进行异常处理,尤其是涉及 将异常输出到控制台时 ,
那么建议使用下面的做法:
try{
//.....
}
catch(Exception ex){
Console2.Error(ex);
}
这样做的好处是可以在Venus中看到异常的累计次数,也可以增加告警规则,例如:
当次数超过一个阀值时,将会以红底色显示。
我们还可以定义一个告警规则,例如:
<Monitor AppName="XDemo.TestApp" MetricName="ERR"
Statistic="Incremental" DueTime="40"
Period="60" Threshold="100" Compare="MoreThan"/>
规则的含意是:
- 针对 "XDemo.TestApp" 这个应用程序,
- 在程序启动40秒后可始监控,
- 每60秒获取 ERR 这个指标值(异常次数)
- 如果增量超过 100,即产生一条告警通知。
不推荐的做法
try {
//.............
} catch ( Exception e ) {
Console2.Info($"刷新告警规则缓存失败 3分钟后重试 失败原因{e.Message}");
}
catch ( Exception ex ) {
Console2.Info($"队列异常:{ex.Message}-{ex.StackTrace}");
}
catch ( Exception ex ) {
Console2.Info($"Alert:{ex.Message}-{ex.StackTrace}");
}
catch (Exception ex)
{
Console.WriteLine(ex.Message + ex.StackTrace);
}
catch (Exception iex)
{
Console2.Warnning(iex.ToString());
}
catch (Exception ex)
{
Console.WriteLine(ex);
}
catch (Exception e)
{
Console.WriteLine($"发送打开消息到rabbitmq异常{e.Message}");
}
catch (Exception e)
{
Console.WriteLine("快照获取失败" + e.ToJson());
return null;
}