According to SF if we use the Database class to issue a DML command:
instead of exceptions, a result object array (or one result object if only one sObject was passed in) is returned containing the status of each operation and any errors encountered
I am still getting exceptions when I call
System.SObjectException: DML statment cannot operate on trigger.new or trigger.old
Why is that?