Saltar al contenido

Captura de diferentes tipos de excepción

Hablando con tu compañero de informática, señala: “Si hubieras detectado ese fallo de conexión en lugar de todo, el servicio habría seguido colapsando y lo habríamos encontrado mucho más rápido”. Pero supongo que eso sólo habría ocurrido si hubiéramos notado la caída del servicio”. Considera esto y actualiza tu código:

1234567891011121314151617181920212223242526272829publicstaticdecimal?GetCurrentPrice(){var priceClient =newPriceClient();try{ priceClient.Connect();var updatedPrice = priceClient.GetPrice();return updatedPrice;}catch(InvalidCastException){retornocimal. Parse(precioCliente.DevueltoValor.Substring(1));}catch(ConexiónFallóExcepción conexiónFalló){var nombre del servidor = conexiónFalló.Nombre del servidor;// registrar detalles del nombre del servidor herereturnnull;}catch{returnnull;}}

csharp

Captura de diferentes tipos de excepción
Captura de diferentes tipos de excepción

Sin el bloque de captura genérico al final, si hay una nueva excepción que no se ha tenido en cuenta, una excepción que subirá por la pila y estrellará el servicio. ¿Y si envolviste todo el servicio en un bloque de captura genérico que, cuando se produjo una excepción inesperada, te envió un correo electrónico? O una notificación de Slack, o lo que sea. Cuando esto ocurriera, ahora sabrías que hay un escenario que no has tenido en cuenta y podrías añadir ese escenario al código en el lugar correcto. Necesitas añadir este manejador de errores de alto nivel y eliminar el bloqueo de captura al final:

12345678910111213141516171819202122232425publicstaticdecimal?GetCurrentPrice(){var priceClient =newPriceClient();try{ priceClient.Connect();var updatedPrice = priceClient.GetPrice();return updatedPrice;}catch(InvalidCastException){returndecimal. Parse(precioCliente.DevueltoValor.Substring(1));}catch(ConexiónFallóExcepción conexiónFalló){var nombre del servidor = conexiónFalló.Nombre del servidor;// registrar detalles del nombre del servidor herereturnnull;}}

csharp

Ahora bien, si se produce una excepción de argumento, una excepción de memoria o una excepción de “nunca pensé que esto pudiera ocurrir”, se levantará la pila y se le notificará para que pueda crear un sistema que tenga en cuenta el nuevo escenario.