2012-07-17 11 views
5

¡Esta es una pregunta un tanto extraña, pero podría ser divertida!¿Puedo causar una excepción a propósito en python?

Necesito de alguna manera causar una excepción de manera confiable en python. Preferiría que sea un disparador humano, pero también estoy dispuesto a insertar algo en mi código que siempre provocará una excepción. (He configurado un control de excepciones y me gustaría probarlo)

He estado mirando a mi alrededor y algunas ideas parecen ser división por cero o algo por el estilo siempre causará una excepción - ¿Hay un mejor ¿camino? Lo más ideal sería simular una pérdida de conexión a Internet mientras el programa se está ejecutando ... ¡cualquier idea sería genial!

¡Diviértete!

+0

Puedes simplemente poner tu código: '' raise ... '', p. 'raise TypeError'' ... – mouad

Respuesta

5

Sí, lo hay: puede plantear explícitamente sus propias excepciones.

raise Exception("A custom message as to why you raised this.") 

Es posible que desee plantear una excepción/error apropiado para la pérdida de conectividad de red.

+0

Fácil de usar. ¡Ya me está ayudando muchísimo! ¡Gracias! – Mizmor

0

Sí, sólo puede plop

1/0 

cualquier parte del código para un error de tiempo de ejecución que se produzca, específicamente en este caso un ZeroDivisionError: integer division or modulo by zero.

Esta es la forma más sencilla de obtener una excepción insertando algo en su código (como mencionó en su publicación). Por supuesto, también puede aumentar sus propias excepciones. Depende de sus necesidades específicas.

+2

... ¿de qué serviría eso? No hace un trabajo suficiente para representar cualquier error que se quiera simular; es solo un 'ZeroDivisionError' en su lugar. – Makoto

+0

@Makoto Para citar a OP: "También estoy dispuesto a insertar algo en mi código que siempre causará una excepción" ... mejor dirija su comentario a OP. – Levon

3

Puede definir sus propias excepciones en Python, para que pueda crear errores personalizados que se adapten a sus necesidades. Se puede probar que existen ciertas condiciones, y utilizar el truthiness de esa prueba para decidir si o no para aumentar su brillante, excepción personalizada:

class MyFancyException(Exception): pass 

def do_something(): 
    if sometestFunction() is True: 
     raise MyFancyException 
    carry_on_theres_nothing_to_see()  

try: 
    do_something() 
except MyFancyException: 
    # This is entirely up to you! 
    # What needs to happen if the exception is caught? 

El documentation tiene algunos ejemplos útiles.

+0

¡Esto también es realmente bueno! Crearé la mía en algún momento cuando tenga un minuto extra. ¡Gracias! – Mizmor

Cuestiones relacionadas