在 Meteor 中捕获错误的问题
Issue with error catching in Meteor
我正在使用 Meteor 中的 HTTP 方法调用外部 API (Box)。这些工作正常,但我正在尝试实施一些错误处理并且 运行 遇到捕获错误的问题。
Meteor.methods({
copyTemplateFolder: function () {
this.unblock();
var accessToken = Meteor.user().services.box.accessToken;
var apiURL = "https://api.box.com/2.0/folders/FOLDER_ID/copy";
var apiCall = HTTP.post(apiURL, {
params: {access_token: accessToken},
data: {
"parent": {
"id" : FOLDER_ID
},
"name": "New Folder"
}
});
try {
var response = apiCall;
console.log(response.data);
return response.data;
} catch(e) {
console.log(e);
}
});
我已经替换了一些 ID 等,但代码在没有错误的情况下工作正常。但是当出现错误时,catch
中的代码永远不会触发。我读过的所有内容都说应该这样做。
有人看到我的操作有问题吗?
您的 try 块不包含实际发生异常的部分。 post
调用将抛出异常。从现有变量中检索子字段永远不会导致异常,即使该字段未定义也是如此。
这可能是您想要的:
Meteor.methods({
copyTemplateFolder: function () {
this.unblock();
var accessToken = Meteor.user().services.box.accessToken;
var apiURL = "https://api.box.com/2.0/folders/FOLDER_ID/copy";
try {
var response = HTTP.post(apiURL, {
params: {access_token: accessToken},
data: {
"parent": {
"id" : FOLDER_ID
},
"name": "New Folder"
}
});
console.log(response.data);
return response.data;
} catch(e) {
console.log(e);
}
});
我正在使用 Meteor 中的 HTTP 方法调用外部 API (Box)。这些工作正常,但我正在尝试实施一些错误处理并且 运行 遇到捕获错误的问题。
Meteor.methods({
copyTemplateFolder: function () {
this.unblock();
var accessToken = Meteor.user().services.box.accessToken;
var apiURL = "https://api.box.com/2.0/folders/FOLDER_ID/copy";
var apiCall = HTTP.post(apiURL, {
params: {access_token: accessToken},
data: {
"parent": {
"id" : FOLDER_ID
},
"name": "New Folder"
}
});
try {
var response = apiCall;
console.log(response.data);
return response.data;
} catch(e) {
console.log(e);
}
});
我已经替换了一些 ID 等,但代码在没有错误的情况下工作正常。但是当出现错误时,catch
中的代码永远不会触发。我读过的所有内容都说应该这样做。
有人看到我的操作有问题吗?
您的 try 块不包含实际发生异常的部分。 post
调用将抛出异常。从现有变量中检索子字段永远不会导致异常,即使该字段未定义也是如此。
这可能是您想要的:
Meteor.methods({
copyTemplateFolder: function () {
this.unblock();
var accessToken = Meteor.user().services.box.accessToken;
var apiURL = "https://api.box.com/2.0/folders/FOLDER_ID/copy";
try {
var response = HTTP.post(apiURL, {
params: {access_token: accessToken},
data: {
"parent": {
"id" : FOLDER_ID
},
"name": "New Folder"
}
});
console.log(response.data);
return response.data;
} catch(e) {
console.log(e);
}
});