如何解决在 Salesforce 中从 Apex 抛出的 LWC 中捕获异常
@AuraEnabled()
public static void associateAccount(string userId,string accountSAPNumber) {
if(String.isBlank(userId) || string.isBlank(accountSAPNumber)) {
throw new AuraHandledException('Please specify both User Email2 and SAP Number2');
}
List<user> users = [SELECT Id,Name,Email FROM User WHERE Email =: userId AND IsActive = true AND Profile.Name ='OEA Customer'];
if(users == null || users.size() <= 0) {
NoDataFoundException noUsersFound = new NoDataFoundException();
noUsersFound.setMessage('No users found with the specified email address: ' + userId);
throw noUsersFound;
}
Id accountrecordtypeId = Schema.sobjectType.Account.getrecordtypeInfosByName().get('OEA Customer Location').getrecordtypeId();
accountSAPNumber = '%' + accountSAPNumber;
List<Account> accounts = [SELECT Id FROM Account WHERE recordtypeId =:accountrecordtypeId AND SAP_Number__c like :accountSAPNumber];
if(accounts == null || accounts.size() <= 0) {
NoDataFoundException noAccountFound = new NoDataFoundException();
noAccountFound.setMessage('No accounts found with the specified SAP Number: ' + accountSAPNumber);
throw noAccountFound;
}
else if(accounts.size() > 1) {
SearchException moreThan1Account = new SearchException();
moreThan1Account.setMessage('More than 1 account found with the specified SAP Number: ' + accountSAPNumber);
throw moreThan1Account;
}
OEA_NewContactFormController.accountMethod(userId,accountSAPNumber);
}
我无法使用以下方法在我的 LWC 控制器中捕获此异常
continueButtonClicked() {
associateAccount({
userId: this.searchKey,accountSAPNumber: this.accountNumber,})
.then((result) => {
try {
console.log("return from remote call " + result);
this.modalPopUpToggleFlag = false;
} catch (error) {
console.log('some error');
}
})
.error((error) => {
console.log("some error in code");
/*if (Array.isArray(error.body)) {
console.log(
"error message :" + error.body.map((e) => e.message).join(",")
);
} else if (typeof error.body.message === "string") {*/
//console.log("error message :" + error);
//}
})
.finally(() => {
console.log("finally message :");
});
}
这总是在控制台上给我一个错误,如“未捕获(承诺)”以及异常的详细信息。如何以处理的方式捕获此异常。
解决方法
正确的语法是 .then().catch().finally()
,而您写的是 .then().error().finally()
。
此外,associateAccount 返回void
,因此不会从result
收到then
。也没有理由将 this.modalPopUpToggleFlag = false;
包装在 try-catch 中,只有当您从未定义 modalPopUpToggleFlag
时才会出现错误。
continueButtonClicked() {
associateAccount({
userId: this.searchKey,accountSAPNumber: this.accountNumber,})
.then(() => {
console.log("return from remote call);
this.modalPopUpToggleFlag = false;
})
.catch((error) => {
console.log("some error in code:",error);
});
}
这是一篇关于 JavaScript 中 Using Promises 的好书
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。