The correct answer for this question is B, but I think it's the wrong answer. The AuditLogTransaction is a service action from a different app; therefore, when it raises an exception, the NotEnoughFunds exception handler cannot catch it. The NotEnoughFunds exception handler is only used to catch an exception that is raised from the TransferFunds server action.
Can anyone explain this to me?
Not sure if i am correct,
1. TransferFunds server action is still part of a single transaction, under the main wrapper PerformTransaction
2. If AuditLogTransaction has exception, think it's understandable to it will not be committed.
3. And since AuditLogTransaction has 'failed' in the main wrapper, and that main single transaction is not completed, means the TransferFunds server action will be rolled back? As such, maybe that is not eventually it is not committed as well.
Thank you.
Thank for your reply
But, in this scenario, the Abort Transaction property is set to Yes, all the database transactions that weren't committed are aborted and changes rolled back in the database only when the NotEnoughFunds is caught. When the AuditLogTransaction raised an exception, i don't think NotEnoughFunds can catch it.
Transfer funds works, but has no commit.Two scenarios:1. AuditLogTransaction raises the TransactionNotFound exception, not reaching the CreateAuditLog of AuditLogTransaction.It returns a TransactionNotFound to PerformTransaction that will rollback the TransferFunds server action.2. AuditLogTransaction has an error on Create AuditLog and returns an unhandled DatabaseException.PerformTransaction will rollback the TransferFunds server action.
hi,
As AuditLogTransaction Service Action raised and exception and no matching exception flow is defined inside PerformTransaction Action then outsystems "AllExceptions" Exception Handler flow will be handling any uncaught exception and the current transaction will be rolled back.