In This Post I will Explain you how one can handle exception in lightining component.
So Before Going to the code lets know about Exception
What Is Exception ?
Exception is an event which occur during execution of program instruction and disrupts the normal flow of program instructions. Exception handling is a mechanism to handle exception so that normal flow of program should be maintained.
Possible Reason For Exception :
Sending a request from a Lightning component to an Apex Controller and getting back a response is a path that has several potential failure points.
Steps to followed to perform Exception Handling Are :
Create the lightning component to show the exception.
3. Code for component that will through an exception . in this component we have a button to delete Account record but this account can not deleted as it is associated with the case.
4 . Create a client site controller for deleteAccount.
({
deleteSlctd : function(component,event,helper) {
var getCheckAllId = component.find("cboxRow");
var selctedRec = [];
for (var i = 0; i < getCheckAllId.length; i++) {
if(getCheckAllId[i].get("v.value") == true )
{
selctedRec.push(getCheckAllId[i].get("v.text"));
}
}
helper.deleteSelected(component,selctedRec);
}
})
({
deleteSlctd : function(component,event,helper) {
var getCheckAllId = component.find("cboxRow");
var selctedRec = [];
for (var i = 0; i < getCheckAllId.length; i++) {
if(getCheckAllId[i].get("v.value") == true )
{
selctedRec.push(getCheckAllId[i].get("v.text"));
}
}
helper.deleteSelected(component,selctedRec);
}
})
({
deleteSlctd : function(component,event,helper) {
var getCheckAllId = component.find("cboxRow");
var selctedRec = [];
for (var i = 0; i < getCheckAllId.length; i++) {
if(getCheckAllId[i].get("v.value") == true )
{
selctedRec.push(getCheckAllId[i].get("v.text"));
}
}
helper.deleteSelected(component,selctedRec);
}
})
5. Create a Helper for deleteAccount.
deleteSelected : function(component,selctedRec){
var action = component.get("c.delSlctRec");
action.setParams({
"slctRec": selctedRec
});
action.setCallback(this, function(response){
var state = response.getState();
if(state == "SUCCESS")
{
var errorMsg = "Successfully Deleted";
var error = "Success";
$A.createComponent(
"c:errorComponent",
{
"errorMsg": errorMsg,
"title" : error
},
function(errComponent){
if (component.isValid()) {
var targetComp = component.find("errorDialogPlaceholder");
var body = component.get("v.body");
body.push(errComponent);
component.set("v.body", body);
}
}
);
} else if (state=="ERROR") {
var errorMsg = action.getError()[0].message;
console.log(errorMsg);
var error = "Error";
$A.createComponent(
"c:errorComponent",
{
"errorMsg": errorMsg,
"title" : error
},
function(errComponent){
if (component.isValid()) {
var targetComp = component.find("errorDialogPlaceholder");
var body = component.get("v.body");
body.push(errComponent);
component.set("v.body", body);
}
}
);
}
});
$A.enqueueAction(action);
}
})
deleteSelected : function(component,selctedRec){
var action = component.get("c.delSlctRec");
action.setParams({
"slctRec": selctedRec
});
action.setCallback(this, function(response){
var state = response.getState();
if(state == "SUCCESS")
{
var errorMsg = "Successfully Deleted";
var error = "Success";
$A.createComponent(
"c:errorComponent",
{
"errorMsg": errorMsg,
"title" : error
},
function(errComponent){
if (component.isValid()) {
var targetComp = component.find("errorDialogPlaceholder");
var body = component.get("v.body");
body.push(errComponent);
component.set("v.body", body);
}
}
);
} else if (state=="ERROR") {
var errorMsg = action.getError()[0].message;
console.log(errorMsg);
var error = "Error";
$A.createComponent(
"c:errorComponent",
{
"errorMsg": errorMsg,
"title" : error
},
function(errComponent){
if (component.isValid()) {
var targetComp = component.find("errorDialogPlaceholder");
var body = component.get("v.body");
body.push(errComponent);
component.set("v.body", body);
}
}
);
}
});
$A.enqueueAction(action);
}
})
deleteSelected : function(component,selctedRec){
var action = component.get("c.delSlctRec");
action.setParams({
"slctRec": selctedRec
});
action.setCallback(this, function(response){
var state = response.getState();
if(state == "SUCCESS")
{
var errorMsg = "Successfully Deleted";
var error = "Success";
$A.createComponent(
"c:errorComponent",
{
"errorMsg": errorMsg,
"title" : error
},
function(errComponent){
if (component.isValid()) {
var targetComp = component.find("errorDialogPlaceholder");
var body = component.get("v.body");
body.push(errComponent);
component.set("v.body", body);
}
}
);
} else if (state=="ERROR") {
var errorMsg = action.getError()[0].message;
console.log(errorMsg);
var error = "Error";
$A.createComponent(
"c:errorComponent",
{
"errorMsg": errorMsg,
"title" : error
},
function(errComponent){
if (component.isValid()) {
var targetComp = component.find("errorDialogPlaceholder");
var body = component.get("v.body");
body.push(errComponent);
component.set("v.body", body);
}
}
);
}
});
$A.enqueueAction(action);
}
})
6 . Create apex class to perform the delete operation.
@AuraEnabled
public List<Account> delRec = new List<Account>();
@AuraEnabled
public static List<Account>delSlctRec(List<String> slctRec)
{
accListJsClass alc = newaccListJsClass();
// Id is for demo purpose only
alc.delRec = [SELECT Id FROM Account WHERE Id = '0017F000006PUEaQAO'];
try{
delete alc.delRec;
}catch(Exception ex)
{
throw newAuraHandledException(ex.getMessage());
}
}
}
@AuraEnabled
public List<Account> delRec = new List<Account>();
@AuraEnabled
public static List<Account> delSlctRec(List<String> slctRec)
{
accListJsClass alc = new accListJsClass();
// Id is for demo purpose only
alc.delRec = [SELECT Id FROM Account WHERE Id = '0017F000006PUEaQAO' ];
try{
delete alc.delRec;
} catch(Exception ex)
{
throw new AuraHandledException(ex.getMessage());
}
}
}
@AuraEnabled
public List<Account> delRec = new List<Account>();
@AuraEnabled
public static List<Account> delSlctRec(List<String> slctRec)
{
accListJsClass alc = new accListJsClass();
// Id is for demo purpose only
alc.delRec = [SELECT Id FROM Account WHERE Id = '0017F000006PUEaQAO' ];
try{
delete alc.delRec;
} catch(Exception ex)
{
throw new AuraHandledException(ex.getMessage());
}
}
}
My Name is Himanshu Rana, 23 Years young, born and grow up in Ghaziabad, India. A High Spirited Salesforce Admin, Developer and a Blogger. I currently work at Wakencode Technologies,