Używam biblioteki gammu Pythona do wysyłania smsów. Czasami coś jest nie tak i chciałbym poradzić sobie z wyjątkiem. Opis wyjątków znajduje się tutaj: https://wammu.eu/ docs/manual/python/exceptions.html#module-gammu.exception

Mam problem z uzyskaniem i zwróceniem błędów z takich sytuacji. Wydrukowałem:

print(sys.exc_info())

Ma to skutek:

(<class 'gammu.ERR_UNKNOWN'>, ERR_UNKNOWN({'Text': 'Nieznany błąd.', 'Where': 'SendSMS', 'Code': 27}), <traceback object at 0x740a6cd8>)

Jeśli przypiszę:

error_obj = sys.exc_info()

Jak mogę z tego uzyskać: tekst, kod i wpisz ERROR (tutaj jest ERR_UKNOWN)? Będę wdzięczny za pomoc.

0
Krzysztof Michalski 15 grudzień 2019, 22:05

2 odpowiedzi

cls, exception, _ = sys.exc_info()
text = exception['Text'] # or exception.Text ?
code = exception['Code'] # or exception.Code ?
print(cls, text, code)

Spójrz także na moduł traceback:

import traceback

try:
    1/0
except ArithmeticError as e:
    traceback.print_exc()
0
RafalS 15 grudzień 2019, 22:20
Kiedy próbuję wykonać twój kod, pojawia się błąd dla tekstu = wyjątek['Tekst']: Obiekt 'ERR_UNKNOWN' nie jest indeksowany.
 – 
Krzysztof Michalski
15 grudzień 2019, 22:34
Trudno mi zgadnąć, jak wyodrębnić te pola, ponieważ nigdzie nie znalazłem definicji. Spróbuj exception.Text, jeśli to nie pomoże, a następnie spróbuj wydrukować wszystkich członków print(vars(exception))
 – 
RafalS
15 grudzień 2019, 22:44

Powinieneś móc użyć args na wyjątku, aby dostać się do Text:

print(error_obj.args)
error_obj.args[0]['Text']
0
2ps 16 grudzień 2019, 08:22