我已经创建了一个Azure函数来保存来自Iot Hub的SQL数据库中的数据正常工作,现在我想将异常和错误保存到Azure存储表,所以为此我添加了try{ } catch(err){}
但这不是工作。请纠正我。谢谢!
我的职能就在这里
module.exports = function (context, iotHubMessage) {
try {
var strMsg = JSON.stringify(iotHubMessage);
context.log('Message received: ' + strMsg);
var ob1 = { "employee_idw": 444, "last_name": "Teller", "first_name": "Saara", "age": 34, "salary": 87000 };
//I misspelled 'employee_idw' to generate error
var ob2 = { "employee_id": 555, "last_name": "Teller", "first_name": "Saara", "age": 31, "salary": 87000 };
ob1.EventProcessedUtcTime = new Date;
ob2.EventProcessedUtcTime = new Date;
var arr = [];
arr.push(ob1);
arr.push(ob2);
context.bindings.outputTable = arr;
context.done();
} catch (err) {
context.log('CCC Error' + err); // even can not see this message in log
context.bindings.error= { "partitionKey": partitionKey, "rowKey": rowKey, "data": err };
}
};
看到这是JSON文件
{
"bindings": [
{
"type": "eventHubTrigger",
"name": "myEventHubMessage",
"path": "myeventhub",
"consumerGroup": "$Default",
"connection": "PBCorIOTHub_events_IOTHUB",
"cardinality": "many",
"direction": "in"
},
{
"type": "apiHubTable",
"name": "outputTable",
"dataSetName": "default",
"tableName": "employees",
"connection": "sql_SQL",
"direction": "out"
},
{
"type": "table",
"name": "error",
"tableName": "dddtTest",
"connection": "cccteststr_STORAGE",
"direction": "out"
}
],
"disabled": false
}
答案 0 :(得分:0)
您是否使用Azure SQL或Azure表存储来存储数据?从您的代码看起来您使用的是Azure表存储。我问的原因是因为更改的属性名称不会导致函数错误。相反,表存储将创建一个带有拼写错误名称的新属性。
就像Mikhail建议存储函数内部导致的错误一样,您只需要创建另一个输出绑定并为其分配异常。
然而,并非所有异常都发生在函数上下文中。例如,function.json配置中的错误可能导致连接到存储的错误。这将导致函数执行在函数代码上下文之外失败。 Azure功能与Application Insights直接集成,可以帮助监控您要查找的内容。这是一篇博文,可以展示如何配置Application Insights。
https://blogs.msdn.microsoft.com/appserviceteam/2017/04/06/azure-functions-application-insights/