Exception Handling In Lightining Component
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.
<-- errorComponent -->
<aura:component>
<aura:attribute name="errorMsg" type="String"></aura:attribute>
<aura:attribute name="title" type="String"></aura:attribute>
<div class="wk_model_bg"></div>
<section role="dialog" aria-labelledby="header" aria-describedby="errMsg" class="slds-modal slds-fade-in-open">
<div class="slds-modal__container " aura:id="ErrorBox" >
<div class="slds-modal__header" aura:id ="errHeader">
<lightning:buttonIcon aura:id="clsBtn" iconName="utility:close" alternativeText="Close" class="slds-button slds-button--neutral slds-p-horizontal--xx-small slds-m-right--x-small slds-float--right" onclick="{!c.myAction}">
</lightning:buttonIcon>
<h2 id="header" class="slds-text-heading--medium wk_text">{!v.title}</h2>
</div>
<div class="myAction slds-p-around--large" aura:id ="errMsg" style="background:#f4f6f9">
{!v.errorMsg}
</div>
</div>
</section>
</aura:component>
2. Create a client site controller for errorComponent.
({
myAction : function(component, event, helper) {
component.destroy();
}
})
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.
<aura:component controller = "accListJsClass">
<div aura:id="errorDialogPlaceholder" >
{!v.body}
</div>
<div class="slds-col slds-size_1-of-8 allBtn">
<lightning:button label="Delete Account"
iconName="utility:delete"
iconPosition="left"
variant="destructive"
onclick="{!c.deleteSlctd}">
</lightning:button>
</div>
</aura:component>
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);
}
})
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);
}
})
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 = 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());
}
}
}
Views: 0

