Приветствует снова StackOverflow сообщество,Поднятие исключения с двумя аргументами
Я читал через библиотеку коллега написал и нашел то, что я не совсем схватывать то, что они пытаются сделать. Но, возможно, это то, чего я не вижу в отношении синтаксиса Python.
class SampleClass:
def some_function(self) -> None:
try:
self.do_something()
except CustomException as e:
raise DifferentExceptionClass("Could not do something", e)
# The previous line is the cause of bewilderment.
def do_something(self) -> None:
raise CustomException("Tried to do something and failed.")
Я прочитал, что рейз может принимать аргументы, но это, кажется, поднимает DifferentExceptionClass исключение с кортежем в качестве значения. В чем разница между тем, что сделал мой коллега здесь, и чем-то вроде raise DifferentExeptionClass("Could not do something. {}".format(e))
Есть ли преимущество в том, чтобы сделать исключение своим путем?
Выход для вызова функции в some_function() является:
test = SampleClass()
test.some_function()
Traceback (most recent call last):
File "<input>", line 4, in some_function
File "<input>", line 10, in do_something
CustomException: Tried to do something and failed.
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "<input>", line 1, in <module>
File "<input>", line 6, in some_function
DifferentExceptionClass: ('Could not do something', CustomException('Tried to do something and failed.',))
EDIT: Коллега недостижима для комментариев. Также они давно написали эту библиотеку и не могли вспомнить «настроение», в котором они находились, когда они написали это. Я думал, что он также сделает хороший разговор о СО, если кто-то еще видел подобную реализацию.
Нет, вы просто вызываете конструктор, который принимает два аргумента ... –