Помимо первоначального ответа «о боже, почему» ...
catch (Exception e)
{
if (e.getCause() != null && e.getCause().getCause() != null && e.getCause().getCause().getMessage().equals("Violation of UNIQUE KEY constraint 'UKC_Invoice_Organisation'")
{
//do special handling here
} else
throw e;
}
Тем не менее, пересмотрите, почему у вас есть такой тип формата исключений.Подумайте о расширении Exception, чтобы вместо этого вы могли написать блок catch (MyCustomException e).