Para responder realmente a su pregunta, generalmente descarto todo lo recibido con error. Eso puede incluir reinicializar el hardware de UART, según el error que sea y los detalles del hardware de UART.
La única excepción es si desea recibir pausas deliberadamente. Esos aparecen como errores de trama. En ese caso, pasa los errores de encuadre a los niveles superiores como condiciones especiales. Sin embargo, eso requiere que la información fuera de banda pase a los niveles más altos y, por lo tanto, la interfaz del receptor UART no puede verse como algo tan simple como obtener un flujo de bytes. Creo que he hecho esto exactamente una vez en muchos proyectos de microcontroladores porque tenía que ser compatible con un sistema antiguo donde los descansos se usaban deliberadamente.
Steven te ha dado algunas buenas ideas sobre qué hacer al respecto en el nivel superior. Cuando cree que hay una posibilidad real de errores y la integridad de los datos es importante, generalmente encapsula fragmentos de datos en paquetes con sumas de verificación. El receptor envía un ACK por cada suma de verificación recibida correctamente.
Sin embargo, la gran mayoría de las veces los errores UART son tan improbables y no tan críticos que puede ignorarlos en el nivel superior. El tipo de errores que el hardware UART puede detectar generalmente se debe a la estupidez del operador, no al ruido de la línea. La mayoría de los ruidos provocarán datos incorrectos, que UART no detectará. Entonces, el controlador UART de bajo nivel arroja cualquier cosa inmediatamente asociada con un error UART, pero de lo contrario continúa pasando la secuencia de bytes recibidos hasta el siguiente nivel. De hecho, hace esto incluso si está utilizando paquetes y sumas de verificación, ya que se realiza a un nivel superior al que se reciben los bytes individuales.