Mam problem z podniesieniem ostrzeżenia w Pythonie bez konieczności awaryjnego zatrzymania/zatrzymania/przerwania programu.Jak podnieść ostrzeżenie w Pythonie bez zatrzymywania (przerywania) programu?
Używam następującej prostej funkcji, która sprawdza tylko, czy użytkownik przekazał mu niezerową liczbę. Jeśli użytkownik przejdzie zero, program powinien ostrzec użytkownika, ale kontynuować normalnie. Powinien działać jak poniższy kod, ale powinien używać klasy Warning(), Error() lub Exception() zamiast ręcznego drukowania ostrzeżenia.
Jeśli użyję poniższego kodu i przekazuję 0 do funkcji, program ulega awarii i wartość nigdy nie jest zwracana. Zamiast tego chcę, aby program działał normalnie i po prostu poinformuj użytkownika, że przekazał 0 do funkcji.
def isZero(i):
if i != 0:
print "OK"
else:
raise Warning("the input is 0!")
return i
Chodzi o to, że chcę, aby móc sprawdzić, że ostrzeżenie zostało rzucone testowanie go przez unittest. Jeśli po prostu wypiszę komunikat, nie jestem w stanie przetestować go z assertRaises w unittest.
Dziękuję, Tomas
Jak dokładnie chcesz powiadomić użytkownika? przez e-mail lub SMS-a? bo to może być połączone, ale musisz być konkretny. – aaronasterling
Dlaczego po prostu nie wydrukujesz tej wiadomości? – sje397
@ sje397 Chodzi o to, że chcę być w stanie przetestować, czy zostało wysłane ostrzeżenie, testując je przez unittest. Jeśli po prostu wypiszę komunikat, nie jestem w stanie tego zrobić z assertRaises w unittest. –