I can't seem to get the original exception.
In my Object:
public void checkBeforeDelete() {
if(getInvoiced() != null && getInvoiced())
throw new RuntimeException("*** Invoice created " +
getFormattedCreationDate() + " is invoiced, can't delete");
}
Then I catch the error the following way:
try {
_session.getDataContext().deleteObject(invoice);
_session.getDataContext().commitChanges();
} catch(Exception e) {
System.out.println("***** CAN'T DELETE INVOICE: " + e.getMessage());
_session.getDataContext().rollbackChanges();
}
e.getCause() will give me an InvocationTargetException.
Alex
Le 26 févr. 08 à 10:56, Andrus Adamchik a écrit :
>
> On Feb 26, 2008, at 11:45 AM, Alexander Lamb (dev) wrote:
>
>> Hello List,
>>
>> I want to prevent a delete of an object if certain attributes have
>> certain values (e.g. do not delete an invoice which has already
>> been sent).
>>
>> I registered the callback in the Modeler. Works fine.
>>
>> I do my test in the callback function I defined, it works fine.
>>
>> Except that to "stop" the delete, I raise a RuntimeException (I
>> don't see any other way). It works and is catched by the delete.
>> However I do not get my exception, but an exception Cayenne has
>> generated.
>>
>> What is the correct way to raise an exception and transfer up the
>> correct error message?
>>
>> Thanks,
>>
>> Alex
>
> Without looking at the code, IIRC CayenneRuntimeException.getCause()
> should store your exception.
>
> Andrus
This archive was generated by hypermail 2.0.0 : Tue Feb 26 2008 - 08:05:39 EST