我必须处理队列中的项目。尝试内部捕获以确保最终执行
从队列中删除项目是手动拨打Queue.DeleteMessage
。无论处理是否成功,都需要这样做。
var queueMessage = Queue.GetMessage();
try
{
pipeline.Process(queueMessage);
}
catch (Exception ex)
{
try
{
Logger.LogException(ex);
}
catch { }
}
finally
{
Queue.DeleteMessage(queueMessage);
}
问题:
如果失败,我错误记录到的一些数据存储。如果此日志记录失败(可能数据存储不可用),我仍然需要将消息从队列中删除。
我已将LogException
呼叫打包在另一个try catch
中。这是正确的方式还是表演的东西?
'即使在catch块中抛出异常时,finally块也会执行。' - 我没有意识到这一点。很好,谢谢。 – davenewza
@Alireza'它仍然未处理',除非和直到它被其他人抓住 –
你提出的和PO的区别在于他的代码捕获了任何可捕获的异常 – Alireza