如果在运行webjob时发生任何异常或错误,我想释放所有对象。我如何知道是否发生了错误。使用webjob是否有任何错误触发器?
有两种方法可以处理此问题:
1( Try/Catch方法:-您可以在Catch块中触发邮件或任何操作。在catch块中,您可以将异常的信息发送到您的邮件帐户,甚至可以写入任何DB表或将其添加到任何队列。
2( 函数过滤器:-您可以使用函数过滤器,该过滤器具有在任何异常情况下调用的函数异常过滤器属性。您可以在此处找到详细信息:https://github.com/Azure/azure-webjobs-sdk/wiki/Function-Filters
他们还有一段代码,你可以从中获得参考:
public class ErrorHandlerAttribute : FunctionExceptionFilterAttribute
{
public override async Task OnExceptionAsync(FunctionExceptionContext exceptionContext, CancellationToken cancellationToken)
{
string body = $"ErrorHandler called. Function '{exceptionContext.FunctionName}': {exceptionContext.FunctionInstanceId} failed. ";
CombineErrorWithAllInnerExceptions(exceptionContext.Exception, ref body);
string[] emailList = System.Configuration.ConfigurationManager.AppSettings["SendErrorEmails"].Split(';');
await SendEmail.SendErrorNotificationAsync("WebJob - Common Driver Error", body);
}
private void CombineErrorWithAllInnerExceptions(Exception ex, ref string error)
{
error += $"ExceptionMessage: '{ex.Message}'.";
if (ex is Domain.BadStatusCodeException)
{
error += $"Status code: {((Domain.BadStatusCodeException)ex).StatusCode}";
}
if (ex.InnerException != null)
{
error += $"InnerEx: ";
CombineErrorWithAllInnerExceptions(ex.InnerException, ref error);
}
} }
您可以通过用"ErrorHandler"属性修饰方法来调用它。因此,如果出现任何异常,将调用"OnExceptionAsync"函数。
使用webjob是否有任何错误触发器?
关于ErrorTrigger
,您可以参考此wiki。如果需要,您可以发送电子邮件通知,也可以执行您编写的方法。在文档中,您可以找到一些代码示例的详细信息。
至于异常,您可以捕获异常并使用try catch
进行处理。