Desafio da Semana #5


Desafio da semana #5

Por: Roberto Alexis Farah

Oi pessoal!

Eis o novo desafio, simples, mas muito interessante.

CENÁRIO

Imagine uma situação típica: você foi o desenvolvedor designado para identificar onde um componente Visual Basic 6 rodando no COM+ está lançando uma exceção fatal e derrubando o processo.

Você precisa obter mais detalhes dessa exceção de modo a achar o real problema. Você faz idéia do método que esteja lançando a exceção.

Para simplificar, imagine que a solução proposta deverá servir para o pequeno método abaixo ou para um complexo e grande método. O código abaixo mostra claramente o ponto onde ocorre a exceção, sem corrigir o código você deve usar um mecanismo para obter mais detalhes da exceção e, preferivelmente, salvar isso em algum lugar, como Event Viewer.

Public Sub DivideByZero()
Dim x As Long
Dim y As Long

y = 5
MsgBox y / x 'error
End Sub

 

SINTOMA

Crash em componente rodando no COM+.

OBJETIVO

O PROBLEMA é bastante óbvio no exemplo acima, uma divisão por zero, entretanto, o que interessa nesse desafio é propor uma SOLUÇÃO que você possa aplicar em outros métodos, seja de uma aplicação executável, DLL ou componente rodando no COM+, desde que feitos com Visual Basic 6.

A solução deve consistir de:

- Salvar os detalhes da exceção e informações relevantes no Event Viewer de modo que ao analisar o Event Viewer seja fácil se saber de onde a exceção é lançada e os detalhes sobre a mesma.

Nota: Sim, é fácil, mas há um macete que torna a solução muito melhor e não é algo muito conhecido! ;)

Semana que vem apresento a resposta.

Boa semana a todos!