Existe uma maneira de enviar uma mensagem de erro amigável sobre violação de restrição

Diz que tenho colunaGender e restriçãoCHECK( Gender IN ('F', 'M', 'OTHER')).
Se esqueci acidentalmente de lidar com isso no lado do cliente, o usuário verá algo como
ORA-02290: check constraint (SYS_C099871244) violated
que não é muito útil nem para o usuário nem para o desenvolvedor que mantém ou depura

xiste uma maneira de fornecer mensagens definidas pelo desenvolvedor, como (pseudo) Java de
assert Gender IN (0,1):'Gender must be F or M'

A única maneira de pensar é mover restrições para o gatilho ANTES DE ATUALIZAR OU ATUALIZAR Raise_Application_Error( code, my_message ). Mas eu não gosto disso

EDITA Lista de razões específicas, conforme nos comentários
1. Eu realmente gosto de manter a lógica o mais próxima possível dos dados
2. Para o usuário final, a mensagem Raise_Application_Error é indistinguível da mensagem do aplicativo
3. Os desenvolvedores verão uma boa mensagem, mesmo que os dados de acesso sejam ignorados pelo aplicativo
4. mover restrições para gatilhos é feio (é?), então eu tenho que achar algo diferente de Raise_Application_Error

EDIT2,5 anos depois, e depois que deixei o emprego relacionado ao banco de dados, finalmente me ocorreu o que realment não gosto disso - duplicação de código. Eu tenho que repetir exatamente a mesma lógica no servidor e no lado do cliente. Provavelmente, em 2 idiomas diferentes. E mantenha-os sincronizados. Isso é fei

Embora as respostas indiquem claramente, não há nada que eu possa fazer sobre isso. Então chegou a hora de eu ser um bom cidadão e finalmente aceitar uma resposta (desculpe, esqueci-me disso).

questionAnswers(4)

yourAnswerToTheQuestion