¿Cómo se usa el manejo de excepciones en el software incorporado?

Las excepciones son un poco peligrosas en el software integrado. Cuando controlas un brazo robot o un bisturí quirúrgico, debes estar seguro de que la rutina que ha comenzado a mover el bisturí tiene la posibilidad de detenerlo. Ahora esto se puede asegurar al tener un bloque try / catch justo en la rutina, por lo que sería una ventaja, pero si alguien se olvida de poner el try / catch alrededor de las partes correctas, una excepción de nivel inferior puede sacarlo directamente de La rutina sin posibilidad de detener el bisturí.

Entonces, si bien try / catch le brinda la capacidad de detectar excepciones, también hace posible lanzar excepciones que quizás no esté preparado para detectar.

Es un análisis de costo / beneficio que debe analizarse cuidadosamente. A veces, las excepciones también hacen que el código sea mucho más claro, a costa de hacer invisibles los saltos salvajes. Ventajas y desventajas. Entonces, ¿qué más hay de nuevo? Cada característica parece tener algunos aspectos excelentes, así como algunos costos obvios y algunos costos ocultos.

También hay un costo para probar / atrapar: se deben crear, destruir y procesar marcos de pila de excepciones especiales. Todo eso lleva algo de tiempo y espacio extra.

Mi experiencia es que se evita. Si bien no existe una razón intrínseca por la que no se deba utilizar, el hábito de transmitir el problema a otra persona es malo para los diseñadores integrados. Tienden a (a) querer entender y explicar cualquier problema en el momento del diseño y (b) manejar los problemas lo más cerca posible de la fuente.

Un patrón es hacer verificaciones por adelantado para que no se produzca ningún error, en lugar de verificar sobre la marcha y lanzar una excepción cuando se produce una. Otro es proporcionar almacenamiento explícito para los datos de error que pueden inspeccionarse cuando se devuelve un error.

La política de manejo de excepciones es algo que debe establecerse muy temprano en el diseño de un sistema embebido y debe cumplirse rigurosamente. Mi experiencia es que las excepciones se consideran más problemas y más riesgos de lo que valen. No pases tus problemas a otra persona, arréglalos.

Si un programa incrustado se escribe correctamente, las excepciones como dividir por cero deberían ser imposibles, ya que, por definición, un sistema incrustado ejecuta un solo programa para siempre y todos los estados posibles se pueden resolver por adelantado. Sin embargo, un diseñador prudente siempre pone una trampa de error crítico y una rutina de recuperación, y / o un temporizador de vigilancia. De esa forma, evitan problemas como los que tengo con mi nueva máquina de café, que ocasionalmente se bloquea y debe desconectarse para restablecerla.

More Interesting

¿Puedo sobrevivir en la industria del software con una maestría en ingeniería eléctrica?

¿Cuáles son algunos conceptos / técnicas de control de calidad rápidos y fáciles que aumentarán nuestro nivel de control de calidad?

¿Cuáles son los mejores softwares de desarrollo rápido de aplicaciones?

¿Es un buen momento para unirse a Yahoo como gerente de producto considerando una fusión con Verizon?

Cómo extraer canciones de un CD de ejecución automática

¿Por qué la mayoría de las compañías de software no tienen ingenieros híbridos que realizan trabajos de desarrollo y control de calidad?

Si solo puedo hacer un curso, ¿debo hacer el proyecto de ingeniería de software o los sistemas de bases de datos?

¿Alguien siente que los proveedores de software están perdiendo contacto con sus usuarios, diseños e idiomas que admiten un desarrollo fácil más que un uso fácil?

¿Cómo se convierten los grandes arquitectos de software en los mejores en lo que hacen? ¿Cuáles son algunos patrones que uno puede seguir para convertirse en uno?

En algunas publicaciones de trabajo de desarrollador se requiere un título de licenciatura, pero no dice nada sobre la especialización. En estos casos, ¿puedo solicitar un puesto de desarrollador como graduado de estudios sociales?

Cómo decidir cuándo escribir un programa y también adaptarlo a futuros cambios

¿Llenando el vacío en los trabajos de ciencia de datos dejará un nuevo vacío en los trabajos de desarrollador de software?

Si los SSD fueran tan baratos como el disco, ¿cómo afectaría a toda la industria de software y hardware?

¿Cuál sería el mejor enfoque para hacer una plataforma de descarga OTA para teléfonos móviles?

¿Qué libros de arquitectura y diseño de software recomienda Regunath Balasubramanian para un ingeniero de software de nivel medio?