Catch exception
The Catch Exception Action Node is used to execute an action when an error occurs.
When an error occurs in an action node, normal execution of the action will stop, and Appfarm will look for a Catch Exception Action Node. It will first look downward on the same level, then go up one level to look for it there (top-down), and so on. When it finds a catch block that meets the criteria of the error, the catch will execute whatever is defined inside it and then resume execution starting with the node directly after the catch (unless you use end execution or some other flow-changing action).
Settings
Catch All
If selected, all types of errors will trigger the execution of the action nodes inside the action.
Execution Types
If Catch All is not selected, you need to define the execution type(s) that shall be caught. Four different options are available, and have a set of different properties.
Delete Constraint Exception
Used when there's a Delete Rule on a relation in the database, and the user tries to delete a parent. As long as objects in an object class have reference to a remote object class, deletions of referenced objects will not be allowed, i.e., if objects in the Project object class reference a Person object, it will not be possible to delete that Person object.
Web Request Error
Used when a web request returns an error, i.e., 400 or 500 error codes. If you don't want the action node to catch all exceptions, you might define specific HTTP Error Codes to be caught by the action node.
Custom Exception
Used when a Throw Exception Action Node returns an error. If you don't want the action node to catch all custom exceptions, you can define specific error codes that should be caught by the action node.
Defined Errors
Used when Appfarm returns an error. Only the error codes you define will be caught by the action node. Here is a list of relevant Appfarm Error Codes.
Name | Code | HTTP Status Code |
---|---|---|
UniquenessConstraintError | 34002 | 500 |
MissingRequiredFieldsError | 34003 | 500 |
InsuficientCreatePermissionError | 34004 | 403 |
InsuficientUpdatePermissionError | 34006 | 403 |
InsuficientDeletePermissionError | 34007 | 403 |
DeleteConstraintException | 34011 | 500 |
PropertyValidationError | 34012 | 400 |
UpdateReadOnlyError | 34008 | 403 |
PersistError | 34010 | 500 |
UpdateObjectError | 34009 | 500 |
WebRequestException | 17003 | 500 |
WebRequestTimeoutException | 17005 | 0 |
WebRequestAbortedException | 17006 | 0 |
GetUserMediaNotAllowedError | 17004 | 500 |
AppfarmCustomException | 17001 | 500 |
31500 | 500 | |
11005 | 404 | |
14007 | 403 | |
13005 | 500 | |
14400 | 400 | |
11404 | 403 | |
QuotaExceededException | 14009 | 422 |
SmsDisabledException | 35001 | |
DailyQuotaExceededException | 35002 | |
MonthlyQuotaExceededException | 35003 | |
16002 | 500 | |
16003 | 500 |
Result mapping
Result mapping might be used to map error data to Data Sources. The following data is available:
Key | Data |
---|---|
httpStatusCode | Error code |
code | Internal Appfarm error code |
name | Error name |
message | Error message |
body | Web Request response data |
The data is returned as a JSON object, and body data can be mapped by setting RootPath to body.theKeyYouWant
.
Last updated