Dúvida: verificar antes de tentar excluir ou deixar lançar exceção?

Tenho uma tabela_X que possui uma chave estrangeira da tabela_Y.
Caso eu tente exlcuir uma linha da tabela_Y que esteja associada a tabela_X gerará uma exceção.
Qual é a melhor solução:
1ª) Colocar para excluir e caso exista a associação deixar ser lançado a exceção e tratar a mesma, colocando uma mensagem para o usuário;
ou
2ª) Primeiro verificar no banco se existe associação e somente tentar excluir caso não exista uma associação. Caso exista associação mostrar mensagem para o usuário.
Ou seja, não será gerado exceção;

Qual é a melhor solução?

Grato.

Eu acho que compensa mais voce tratar a excessao e dizer para o usuario que, para ele excluir aquele elemento, ele deveria primeiro apagar a chave estrangeira da tabelaX

Nao sei, essa é só minha opiniao xD, espere outros usuarios responderem e veja o que voce acha mais adequado.

Melhor em que termos e cenário?
Como analista, eu sugeriria verificar o que as regras de negócio dizem (se isto for contemplado, faça o que pede a regra, caso contrário, ignore - ou seja, deixa a exceção estourar).
Como programador que não quer retrabalho, verificar antes e dizer que existe a associação é a melhor coisa.
Em linhas gerais, prefiro o primeiro, pois, se o usuário não vê a mensagem de erro posterior e imagina que deletou, #comofas???

Acho que não me expliquei direito.
Ambas as opções serão exibidas mensagens de erro.
Ou seja, para o usuário não tem diferença.
A diferença é em relação a forma como é tratado o fato do usuário não poder excluir uma linha que tem associação com outra tabela.
1º) Se é com tratamento de exceção
2º) Ou se com um select verificando antes se existe uma associação.

[quote=forever_juba][quote]
Melhor em que termos e cenário?
Como analista, eu sugeriria verificar o que as regras de negócio dizem (se isto for contemplado, faça o que pede a regra, caso contrário, ignore - ou seja, deixa a exceção estourar).
Como programador que não quer retrabalho, verificar antes e dizer que existe a associação é a melhor coisa.
Em linhas gerais, prefiro o primeiro, pois, se o usuário não vê a mensagem de erro posterior e imagina que deletou, #comofas???
[/quote]

Acho que não me expliquei direito.
Ambas as opções serão exibidas mensagens de erro.
Ou seja, para o usuário não tem diferença.
A diferença é em relação a forma como é tratado o fato do usuário não poder excluir uma linha que tem associação com outra tabela.
1º) Se é com tratamento de exceção
2º) Ou se com um select verificando antes se existe uma associação.
[/quote]

Bom se teu banco ja contem um check constraint da vida lá e ja vai reclamar da dependencia, não compensa voce fazer um select de novo pra ver isso . Ja que isso está sendo tratado a nível de banco de dados , seu nivel de aplicação não deve ser preocupar com isso . A não ser que voce queira garantir com redundancia , ai faz o select tb pra garantir. A diferença entre um e outro depende do que voce vai exibir na tela , pq tem diferenca voce exibir “Voce não pode excluir esse registro pois ele contem dependencias” e “Voce não pode excluir esse registro pois ele contem dependencias com (dados)” no segundo caso inevitavelmente voce vai precisar dessa query. Então escolha dependendo da msg de exibição.