Fluxo Alternativo no Catch

10 respostas
Z

Bom dia Caros colegas Gujeiros,

Atualmente estou trabalhando com .Net e recentemente eu fui alocado num novo cliente, ou seja, um novo projeto.
Ontem tive um workshop da arquitetura, que será usada neste novo projeto e o arquiteto em questão apresentou algo que eu particulamente nunca vi.
O arquiteto é de Java, mas o cliente o contratou para essa nova arquitetura em .Net, não sei se essa informação ajuda em algo, mas enfim …

O arquiteto apresentou que, nem tudo é uma exception, ou seja, quando o usuário tenta fazer algo do fluxo principal e por algum motivo nao consegue é uma exceção, então você pode na arquitetura lançar uma exception customizada e capturá-la no CATCH, assim, você pode a partir deste catch realizar o fluxo de exceção ou alternativo. (palavras dele).

Para resumir, ele falou que um fluxo alternativo ou de exceção pode ser tratado no CATCH.

Nota minha: Pelo que eu entendo um fluxo alternativo de negócio ou de exceção não tem nada a ver com a parte tecnica, eu nunca vi ninguém tratar um fluxo alternativo dentro do catch a partir de uma exception customizada. Então quer dizer que eu devo criar várias exceptions customizadas para atender meus fluxos alternativos ou de exceção de negócio é isso??

Ai vem a minha dúvida, alguém já viu isso?

10 Respostas

pugnator

Então quer dizer que eu devo criar várias exceptions customizadas para atender meus fluxos alternativos ou de exceção de negócio é isso??
Acho que é isso mesmo.

… fluxo principal e por algum motivo nao consegue é uma exceção, então você pode na arquitetura lançar uma exception customizada e capturá-la no CATCH, assim, você pode a partir deste …
“pode” é diferente de “deve” … heheh tem que conversar com o cara se vc é obrigado a fazer assim ou é apenas uma sugestao ou boa pratica apontada por ele…

eu nunca vi.

mas se um fluxo é dividir dois valores A/B …etc … e se o valor de B for zero, vai gerar um erro que vc vai tratar no catch e lá fazer algum tratamento , isso poderia ser considerado um fluxo alternativo…

Ataxexe

Sempre achei bizarro usar o catch pra fluxos alternativos. Pra fluxos de exceção tudo bem.

Isso aí eu consideraria um fluxo de exceção e não alternativo. Mas não sou o cara mais indicado pra opinar sobre essas coisas.

pugnator

sim, é um fluxo de excecao. Mas de uma visão funcional poderia ser um fluxo alternativo, questao de ponto de vista e opiniao. Eu nao usaria essa abordagem…

Z

Fala galera,

Bom eu também não usaria essa abordagem de colocar fluxos alternativos e mesmo de exceção no catch e respondendo a questão do pode, na verdade é deve mesmo rss …
De qualquer maneira no fim do treinamento eu descobri que não tem jeito, teremos que usar essa abordagem mesmo e criar exceptions customizadas caso seja necessário.

Obrigado pelas respostas.

Abss,

Zabimaru

ViniGodoy

Não use exceções para controle de fluxo:
http://c2.com/cgi/wiki?DontUseExceptionsForFlowControl

É uma péssima prática.
Torna o código pouco claro. Se isso for usado como prática, as exceções se tornam uma espécie de “go to”.

Exceção, como o próprio nome indica, é para código de exceção, não para regras.

Esse arquiteto deveria voltar para a escola.

Z

Bom dia Vini,

Eu concordo com você 101%, porém, entretando, todavida, como eu falei anteriormente, não é pode usar, DEVE usar rsss …

Mas eu queria realmente ouvir/ler de alguém que batesse o martelo, que é uma péssima prática mesmo.

abs.

ViniGodoy

Zabimaru:
Eu concordo com você 101%, porém, entretando, todavida, como eu falei anteriormente, não é pode usar, DEVE usar rsss …

Mas eu queria realmente ouvir/ler de alguém que batesse o martelo, que é uma péssima prática mesmo.

É por essas e outras que defendo a extinção de cargos somente de arquiteto/analista.

Z

Fala Vini,

Eu estava fazendo algumas pesquisas relacionado a esse assunto. O que você acha dessa abordagem numa arquitetura SOA?
Imagina que você vai consumir o serviço, exemplo, consultaSaldoConta, qual seria a melhor opção? retornar, por exemplo também, o valor 0 (ou seja sem saldo) ou o serviço retornar uma exception do tipo zeroException …

Se formos consumir esse serviço e o mesmo retornar 0, cada cliente (tela, forms, bat), pode trabalhar do modo que quiser, exibe na tela, tenta fazer uma divisão do valor por algo, o que pode causar outro erro, etc … agora se eu retorno uma exception … pronto matou o processo.

O que você acha? Se eu não me engano no conceito de SOA, há uma abordagem assim.

abss

A

Mas a conta ter saldo 0 não seria nem um fluxo alternativo, muito menos de exceção (apesar de achar a linha que separa ambos bem tênue).
Ter saldo 0 é uma situação totalmente normal de uma conta.

Você deve sempre tratar as entradas de um sistema, não pode contar que a informação sempre virá “redonda”.

Enquanto falhar cedo é uma boa alternativa, não acho que esse seja sequer um exemplo de falha.

ViniGodoy

Como o Abel falou, essa é uma situação válida, então não é exceção.

Criado 30 de agosto de 2012
Ultima resposta 6 de set. de 2012
Respostas 10
Participantes 5