afv-library/skills/platform-apex-generate/assets/exception.cls

51 lines
1.8 KiB
OpenEdge ABL

/**
* Custom exception for {describe when this exception is thrown}.
* Use this exception to signal domain-specific errors that callers
* can catch and handle distinctly from system exceptions.
*
* @example
* throw new {ClassName}('Account merge failed: duplicate detected.');
*
* // Wrap a caught exception
* try {
* // ... risky operation
* } catch (DmlException e) {
* throw new {ClassName}('DML failed during account merge: ' + e.getMessage());
* }
*/
public with sharing class {ClassName} extends Exception {
// Apex custom exceptions automatically inherit:
// - getMessage()
// - getCause()
// - getStackTraceString()
// - setMessage(String)
// - initCause(Exception)
//
// And support these constructor patterns:
// - new {ClassName}()
// - new {ClassName}('message')
// - new {ClassName}(causeException)
// - new {ClassName}('message', causeException)
//
// Note: Apex does NOT support custom constructors on Exception subclasses.
// To add context, use the message string or create a wrapper pattern:
//
// Example wrapper pattern (if you need structured error data):
//
// public class {ClassName}Detail {
// public String errorCode;
// public List<Id> failedRecordIds;
// public String detail;
//
// public {ClassName}Detail(String errorCode, List<Id> failedRecordIds, String detail) {
// this.errorCode = errorCode;
// this.failedRecordIds = failedRecordIds;
// this.detail = detail;
// }
//
// public override String toString() {
// return '[' + errorCode + '] ' + detail + ' (Records: ' + failedRecordIds + ')';
// }
// }
}