Choose where you’d like to start

Try-Catch

Overview

The try-catch statements are used as "exception handlers" that can test Deluge scripts for run-time errors, and perform required actions if any errors are found. The exception handler is established by enclosing deluge code, which you think might throw an error, in the Try block. The Try block is immediately followed by a Catch block which contains code to be executed if any errors are thrown in the Try block. If no errors are found, the Catch block is simply ignored and is not executed.

Syntax

try 
{ 
<code>//Run code here. Enclose Deluge script that might throw an error. 
} 
catch(<exception_variable>) 
{ 
<code>//Handle errors here. Write Deluge script to perform any action if errors are found in Try block. 
} 

This task can be used in the following events

When a record is Created
On LoadYes
On ValidateYes
On SuccessYes
On User inputYes
Subform on add rowYes
Subform on delete rowYes
When a record is Created or Edited
On LoadYes
On ValidateYes
On SuccessYes
On User inputYes
Subform on add rowYes
Subform on delete rowYes
When a record is Edited
On LoadYes
On ValidateYes
On SuccessYes
On User inputYes
Subform on add rowYes
Subform on delete rowYes
When a record is Deleted
On ValidateYes
On SuccessYes
Other workflow events
On a scheduled dateYes
During approval processYes
During payment processYes
In a Custom FunctionYes
In an Action item in reportYes

Exception variable attributes

The <exception_variable> holds the error message and line number of the statement that caused the error. To fetch individual components, the following 2 attributes can be used:

SyntaxDescription
<variable> = <exception_variable>.lineNo;Fetches the line number of the statement that caused the error.
<variable> = <exception_variable>.message;Fetches the error message.

Example 1

In the following example, there are only 3 items available in the list, however, the next statement tries to fetch the item at index 10. Hence, an error will be thrown. The thrown error is captured in the catch block and .

try 
{ 
products = {"Creator","CRM","Cliq"}; 
products = products.get(10); 
products.add("Sheet"); 
} 
catch(e) 
{ 
info e.lineNo; // Displays line number of the statement that caused the error 
info e.message; // Displays the error message 
info e; // Displays both line number and error message 
}

Here, the value stored in the exception variable - e is: Error at line : 6, Given index 10 is greater than the list size

Example 2

Typically data used are stored and fetched from Zoho products, however, let's assume the order placed  by a customer is stored in the collection variable - order. The inventory details of products available are stored in the collection variable - products. If there is any problem with price calculation or stock updation, an email needs to be sent to the support team. In the following example, the order quantity is fetched incorrectly and stored as an empty value in the order variable. Here, an error will be returned and the script execution of the try block will be terminated. The returned error is captured and sent as an email to support@zylker.com using the catch block.

try 
{ 
//Price calculation block 
order = {"item":"Candy","quantity":""}; //An empty value is assigned to the quantity key 
products={{"item":"Candy","stock":50,"price":100,"vendor-email":"candy-vendor@zylker.com"},{"item":"Cookies","stock":50,"price":75,"vendor-email":"cookie-vendor@zylker.com"}}; 
for each product in products 
{ 
    if(product.get("item") == order.get("item")) 
    { 
total_price = product.get("price")*(order.get("quantity").toLong());//Error occurs at this statement because this calculation cannot be performed with an empty quantity value 
​
total_price_including_tax = total_price + (total_price*0.05); 
product.put("stock",product.get("stock") - order.get("quantity").toLong()); 
} 
break; 
} 
 
} 
catch(e) 
{ 

//Error returned by the try block is stored in the variable - e 
//Send an email to support@zylker.com with the details about the error occurred 
sendmail 
[  
    from:zoho.loginuserid 
    to:"support@zylker.com" 
    subject:"Something went wrong while processing the order" 
    message:"<div>An error occurred during price calculation or inventory updation. Please check ASAP.<br></div><div><br></div><div><b>Error details&nbsp;</b><b><br></b></div><div>Error Message: "+e.message+"</div><div>Line Number: "+e.lineNo+"<br></div><div><br></div>" 
] 

} 

// Periodic inventory check 
// This block will be executed irrespective of if an error is captured in the try catch block. Therefore the function execution will not be hindered because of runtime errors occurred within try block. 
for each product in products 
{ 
    if(product.get("stock")<50) 
{ 
    sendmail 
    [  
        from:zoho.loginuserid 
        to:product.get("vendor-email") 
        subject:"Refill request" 
        message:"<div>We're running out of stock. Please refill.<br></div><div><br></div><div><b>Product details: </b><b><br></b></div><div><br></div><div>Name: "+product.get("item")+"<br></div><div>Quantity: 500</div>" 
    ] 
    } 
    } 
 

Get Started Now

Execute