On Aug 2, 2009, at 9:35 AM, Miguel Lopes wrote:

>>      Generally you want to catch errors in your saves, and when an  
>> error
>> is encountered, rollback everything. Only if no errors occur do you
>> call commitTransaction.
>
> How can I catch errors in saves?
> I've checked the API and bizobj methods save() and saveAll() do not
> raise errors.


        Yes, they do. If the bizobj in question is controlling the  
transaction, it will handle the rollback on such errors, and then re- 
raise the exception for the UI (or any other calling object) to  
respond to. In Dabo, we define our own exceptions that are used when  
certain problems are encountered; in the save() method alone, the  
following exception classes are used:

dException.BusinessRuleViolation
dException.MissingPKException
dException.ConnectionLostException
dException.NoRecordsException
dException.DBQueryException
dException.dException

        These different exception classes allow us to handle different  
situations appropriately; all Dabo exception classes inherit from  
dException.dException. In your code you could do something simple like:

try:
        self.save()
except dException.dException, e:
        dabo.errorLog.write("Save failed with error: %s" % e)
        self.rollbackTransaction()


-- Ed Leafe





_______________________________________________
Post Messages to: [email protected]
Subscription Maintenance: http://leafe.com/mailman/listinfo/dabo-users
Searchable Archives: http://leafe.com/archives/search/dabo-users
This message: 
http://leafe.com/archives/byMID/[email protected]

Reply via email to