2010-02-24 7 views

Respuesta

5

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.

+2

¿Sería apropiado lanzar la excepción logic_error cuando detectamos errores en nuestro código? p.ej. Úselo en lugar de assert(). – sivabudh

+4

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

+0

@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

2

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.

Cuestiones relacionadas