entenda profundamente a diferença entre throw
e lança nova excepção ()
]
No manuseio de exceções, existem diferenças significativas nos efeitos de uso de
e lançar nova excepção ()
. Vamos mergulhar em seus respectivos comportamentos:
throw : reter a informação de exceção original
]
A instrução
retém a exceção ativa atualmente. Quando usado no bloco catch
, ele retém o rastreamento do tipo, mensagem e pilha da exceção original. Isso permite que a exceção continue a se propagar sem ser modificada.
try { ... }
catch { throw }
Try , o bloqueio Catch
fará novamente a mesma exceção, com suas informações originais intactas.
lança nova excepção () : Redefinir pilha Trace
]
por outro lado,
cria uma nova instância de exceção e usa a mensagem especificada. Esta ação redefine o rastreamento da pilha, excluindo todas as informações de rastreamento que ocorreram antes do bloco CATCH
.
try{ ... }
catch(Exception e) {throw new Exception(e.message) }
Try , o Catch
o bloco criará uma nova exceção com a mensagem da exceção original, mas o rastreamento da pilha começa no próprio Catch
.
tocar ex
recomendo não usar
no catch
block. Isso fará com que a exceção original se propagasse, mas o rastreamento da pilha será redefinido. Isso dificulta a depuração da fonte de exceções.
] Em alguns casos, pode ser necessário envolver todas as exceções em um objeto de exceção personalizado para fornecer informações adicionais. Para fazer isso, defina uma nova classe de exceção herdada de
Exception, incluindo todos os quatro construtores de exceção. Opcionalmente, você pode adicionar um construtor adicional que aceita a exceção original e as informações extras. Ao jogar uma exceção personalizada, aproveite a exceção original como um parâmetro de exceção interna para preservar seu rastreamento de pilha e outras propriedades.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3