How does getLastErrorMessage work?

There is a method on the GlideRecord object called getLastErrorMessage(). This method, according to the docs (opens in a new tab), returns the last error message that was generated by a database operation.

The docs don't go into much detail, so here's some more information on how it works.

Assume we've set up a business rule which uses setAbortAction(true) to prevent a database insert whenever we try to set the number field to the boolean value of false on a new or existing incident record.

var grIncident = new GlideRecord('incident');
grIncident.setValue('number', false);
var incidentId = grIncident.insert();
 
gs.info(grIncident.getLastErrorMessage());
// *** Output: Operation against file 'incident' was aborted by Business Rule 'Test^57d28f7adb714650553e8f8d
 
// getLastErrorMessage() isn't available on the table level, however.
var grIncident2 = new GlideRecord('incident');
gs.info('grIncident2: ' + grIncident2.getLastErrorMessage());
// *** Output: null
 
// getLastErrorMessage() is also only availble in the context in which the error is thrown. Trying to access it from a different context, using the same sys_id doesn't work.
var grIncident3 = new GlideRecord('incident');
grIncident3.get(incidentId);
gs.info('grIncident3: ' + grIncident3.getLastErrorMessage());
// *** Output: null