No creo que un programa deba ignorar silenciosamente o causar estragos cada vez que se encuentre con un problema.
Lo que hago con el software interno que escribo para mi empresa ...
Depende del error, digamos que si es una función crítica que está ingresando datos en MySQL, debe informar al usuario que falló. El controlador de errores debe intentar recopilar tanta información y proporcionar al usuario una idea de cómo corregir el error por sí mismo para que pueda guardar los datos. También me gusta proporcionar una forma de enviarnos silenciosamente la información que intentaban guardar para que, en el peor de los casos, podamos ingresarla manualmente después de corregir el error.
Si no es una función crítica, algo que puede generar un error y no afectar el resultado final de lo que están tratando de lograr, es posible que no les muestre un mensaje de error, pero haga que envíe un correo electrónico que lo inserte automáticamente en nuestro software de seguimiento de errores o un grupo de distribución de correo electrónico que alerta a todos los programadores de la compañía para que estemos al tanto del error, incluso si el usuario no lo está. Esto nos permite arreglar el back-end mientras que en el front-end nadie sabe lo que está pasando.
Una de las cosas más importantes que trato de evitar es que el programa se bloquee después del error, no poder recuperarse. Siempre trato de darle al usuario la opción de continuar sin cerrar la aplicación.
Creo que si nadie sabe sobre el error, nunca se solucionará. También creo firmemente en el manejo de errores que permite que la aplicación continúe funcionando una vez que se descubre un error.
Si el error está relacionado con la red, ¿por qué no hacer que las funciones realicen una prueba de comunicación de red simple antes de ejecutar la función para evitar el error en primer lugar? Luego, solo para alertar al usuario de que no hay una conexión disponible, verifique su Internet, etc., etc. e intente nuevamente.