2012-07-17 9 views
5

Quindi questa è una piccola domanda strana, ma potrebbe essere divertente!Posso provocare un'eccezione di proposito in python?

Ho bisogno di causare in qualche modo in modo affidabile un'eccezione in python. Preferirei che fosse attivato dall'uomo, ma sono anche disposto a incorporare qualcosa nel mio codice che causerà sempre un'eccezione. (Ho impostato alcune eccezioni e mi piacerebbe testarlo)

Mi sono guardato intorno e alcune idee sembrano essere una divisione per zero o qualcosa del genere causerà sempre un'eccezione - C'è una soluzione migliore modo? L'ideale sarebbe simulare una perdita di connessione a Internet mentre il programma è in esecuzione ... qualsiasi idea sarebbe fantastica!

Buon divertimento!

+0

Puoi semplicemente inserire il codice: '' raise ... '', ad es. '' raise TypeError'' ... – mouad

risposta

5

Sì, c'è: è possibile aumentare in modo esplicito le proprie eccezioni.

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

Si vorrebbe alzare un adeguato un'eccezione/errore per la perdita della connettività di rete.

+0

Facile da usare. Mi sta già aiutando un sacco! Grazie! – Mizmor

0

Yup, si può solo plop

1/0 

qualsiasi punto del codice per un errore di tempo di esecuzione a verificarsi, in particolare in questo caso un ZeroDivisionError: integer division or modulo by zero.

Questo è il modo più semplice per ottenere un'eccezione incorporando qualcosa nel codice (come hai detto nel tuo post). Ovviamente puoi anche aumentare le tue eccezioni. Dipende dalle tue esigenze specifiche.

+2

... a cosa serve? Non fa un lavoro sufficiente a rappresentare l'errore che si vuole simulare; è invece solo un 'ZeroDivisionError'. – Makoto

+0

@Makoto Per citare OP: "Sono anche disposto a incorporare qualcosa nel mio codice che causerà sempre un'eccezione" .. è meglio indirizzare il tuo commento su OP. – Levon

3

È possibile definire le proprie eccezioni in Python, in modo da poter creare errori personalizzati in base alle proprie esigenze. È possibile verificare che esistano determinate condizioni, e utilizzare il truthiness di quel test per decidere o meno di alzare la lucida, eccezione personalizzata:

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? 

Il documentation ha alcuni esempi utili.

+0

Anche questo è molto buono! Creerò la mia prima o poi quando avrò un minuto in più. Grazie! – Mizmor

Problemi correlati