Si utiliza la excepción std :: logic_error en su código, ¿en qué caso lo usa?C++: ¿Cuál es el uso apropiado para la excepción std :: logic_error?
Respuesta
logic_error
es la base para las siguientes excepciones: domain_error
, invalid_argument
, length_error
, out_of_range
.
Esos son todos los errores lógicos: hay algo mal con la entrada de modo que la salida sería ilógica. Entonces, yo diría que generalmente no necesita usarlo directamente, ya que esos cuatro cubren cualquier error de lógica que se me ocurra. Pero eso te da una idea de cuál es la categoría.
Como ya mencionó GMan, es principalmente una base para otras clases de excepción. Puede considerar usarlo directamente para algo que es básicamente una afirmación. P.ej. si algún código depende de que se haya construido un objeto en particular antes de que se ejecute, podría ser apropiado lanzar un logic_error
(en lugar de una derivada) si se ejecuta y ese objeto no se ha construido aún.
- 1. Confundido sobre std :: runtime_error contra std :: logic_error
- 2. lenguaje apropiado para la asignación std :: string
- 3. ¿Es apropiado lanzar una excepción de CoerceValueCallback
- 4. Uso apropiado de shared_ptr?
- 5. ¿Cuál es un uso apropiado para el control MultiView de ASP.NET?
- 6. ¿Es este un uso apropiado del polimorfismo?
- 7. ¿Cuál es el significado de este error C++ std :: length_error
- 8. ¿Cuál es el uso previsto de IllegalStateException?
- 9. ¿Cuál es el uso de la sintaxis = =?
- 10. ¿cuál es el uso básico de alignment_storage?
- 11. ¿Cuál es el uso de la sobrecarga const en C++?
- 12. Uso apropiado del método estático
- 13. Buscar y reemplazar: ¿Cuál es el atajo apropiado?
- 14. arrojar nueva std :: excepción vs std :: excepción tiro
- 15. ¿Cuál es la diferencia entre std :: set y std :: vector?
- 16. Uso apropiado de volátil sig_atomic_t
- 17. El uso apropiado de configuración Commons Apache
- 18. C++ Excepciones y herencia de std :: excepción
- 19. ¿IllegalStateException es apropiado para un objeto inmutable?
- 20. ¿Cuál es la forma correcta de pasar una excepción? (C#)
- 21. C++ Excepciones; int o std :: excepción?
- 22. ¿Cuál es el alcance de la declaración de "uso" en C++?
- 23. ¿Cuál es la diferencia entre std :: merge y std :: set_union?
- 24. ¿Cuál es la diferencia entre std :: valarray y std :: array
- 25. ¿Cuál es la diferencia entre std :: condition_variable y std :: condition_variable_any?
- 26. ¿Cuál es el constructor predeterminado para el puntero de C++?
- 27. ¿Cuál es el modismo más apropiado para productor/consumidor en Go?
- 28. ¿Cuál es la implementación más simple de RTTI para C++?
- 29. El uso apropiado de "Uso de" declaración de DataContext
- 30. El uso de std :: mover
¿Sería apropiado lanzar la excepción logic_error cuando detectamos errores en nuestro código? p.ej. Úselo en lugar de assert(). – sivabudh
Probablemente no. 'assert''s son para * errores del programador *. Comprobar algo es nulo, etc., cosas que * no deberían suceder *, independientemente de la entrada del usuario. Por el contrario, las excepciones son para cosas que se espera que sucedan de vez en cuando, y que sean atrapadas y procesadas. – GManNickG
@GMan: ¿Qué excepción podría usar en lugar de nuestra buena versión para detectar errores que podrían ocurrir durante el tiempo de ejecución? Creo que afirmar es genial, pero me gustaría usar la excepción para manejarlas por salidas elegantes. – sivabudh