class Application(object):
def __init__(self, master):
self.master = master
Tk.report_callback_exception = self.show_error
def show_error(self, *args):
err = traceback.format_exception(*args)
messagebox.showerror('Title', f"{err[-1]}")
При возникновении исключения у меня будет что-то вроде этого:
Если создать простое Исключение Класса из Исключения в легко передать описание:
class Pingu_Exception(Exception):
pass
, если я за исключением ZeroDivisionError и поднять мою ошибку (Pingu_Exception) из импортированного python файла, я могу легко его перехватить
try:
x = 4 / 0
except ZeroDivisionError:
raise Pingu_Exception("Description")
Проблема в том, когда я пытаюсь поймать импортированное исключение. Например:
from requests.exceptions import ReadTimeout
class Woocommerce_api(object):
def __init__(self):
self.orders_endpoint = "orders/"
self.customers_endpoint = "customers/"
self.products_endpoint = "products/"
def __api_json(self, endpoint):
try:
wcapi = API(
url="https://www.xxxx.it",
consumer_key=self.consumer_key,
consumer_secret=self.consumer_secret,
wp_api=True,
version="wc/v1",
query_string_auth=True,
timeout=3
)
return wcapi
except requests.exceptions.ReadTimeout:
raise Pingu_Exception('"Timeout error\nIl server non risponde\nRiprova nuovamente')
Это то, что я ловлю:
, но при попытке поднять request.exceptions. ReadTimeout, в своей же функции он будет работать:
def __api_json(self, endpoint):
try:
raise requests.exceptions.ReadTimeout
wcapi = API(
url="https://www.slow-sud.it",
consumer_key=self.consumer_key,
consumer_secret=self.consumer_secret,
wp_api=True,
version="wc/v1",
query_string_auth=True,
timeout=3
)
return wcapi
except requests.exceptions.ReadTimeout:
raise Pingu_Exception('"Timeout error\nIl server non risponde\nRiprova nuovamente')
return False