2012-07-17 10 views
5

To trochę dziwne pytanie, ale może być zabawne!Czy mogę spowodować wyjątek celowo w python?

Muszę jakoś niezawodnie spowodować wyjątek w Pythonie. Wolałbym, aby był uruchamiany przez ludzi, ale jestem również skłonny do osadzenia czegoś w moim kodzie, co zawsze spowoduje wyjątek. (Ustawiłem obsługę wyjątków i chciałbym to przetestować)

Rozglądałem się i niektóre pomysły wydają się być dzielone przez zero lub coś w tym stylu zawsze spowoduje wyjątek - Czy jest lepszy droga? Najbardziej idealna byłaby symulacja utraty połączenia z Internetem, podczas gdy program jest uruchomiony .... wszelkie pomysły byłyby świetne!

Miłej zabawy!

+0

Możesz po prostu wpisać swój kod: '' raise ... '', np. '' raise TypeError'' ... – mouad

Odpowiedz

5

Tak, istnieje: Można jawnie podnieść własne wyjątki.

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

Użytkownik powinien zgłosić odpowiedni wyjątek/błąd w przypadku utraty łączności z siecią.

+0

Łatwy w użyciu. Już pomaga mi tona! Dzięki! – Mizmor

0

Tak, można po prostu plop

1/0 

gdziekolwiek w kodzie błędu dotyczącego czasu pracy występuje, konkretnie w tym przypadku ZeroDivisionError: integer division or modulo by zero.

To najprostszy sposób na uzyskanie wyjątku przez osadzenie czegoś w kodzie (jak wspomniano w twoim poście). Oczywiście możesz podnieść własne wyjątki. To zależy od Twoich konkretnych potrzeb.

+2

... co by to mogło zrobić? Nie wystarcza do zademonstrowania błędu, który chciałby zostać zasymulowany; zamiast tego jest to po prostu "ZeroDivisionError". – Makoto

+0

@Makoto Aby zacytować OP: "Jestem również skłonny do osadzenia czegoś w moim kodzie, który zawsze spowoduje wyjątek". Najlepiej skierować swój komentarz na PO. – Levon

3

Możesz definiować własne wyjątki w Pythonie, dzięki czemu możesz tworzyć własne błędy dostosowane do swoich potrzeb. Można sprawdzić, że istnieją pewne warunki i użyć truthiness tego testu, aby zdecydować, czy należy podnieść swoją lśniącą, niestandardowe wyjątek:

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? 

documentation ma kilka przydatnych przykładów.

+0

To jest naprawdę dobre! Będę kiedyś tworzyć własne, kiedy dostanę dodatkową minutę. Dzięki! – Mizmor

Powiązane problemy