What's the proper way to reraise a custom exception?
如果我有这个功能,
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | def parse_datetime(s, **kwargs): """ Converts a time-string into a valid :py:class:`~datetime.datetime.DateTime` object. Args: s (str): string to be formatted. ``**kwargs`` is passed directly to :func:`.dateutil_parser`. Returns: :py:class:`~datetime.datetime.DateTime` """ if not s: return None try: ret = dateutil_parser(s, **kwargs) except (OverflowError, TypeError, ValueError) as e: logger.exception(e, exc_info=True) raise SyncthingError(*e.args) return ret |
将捕获的异常作为公共库异常引发的最正确方法是什么? (
在Python 3中,异常可以链接,
1 | raise SyncthingError("parsing error") from e |
将生成一个堆栈跟踪,其中包含原始异常的详细信息。
raise语句中有一些例子。
只要公共库异常的构造使用Error或Exception,您就应该能够引发它。 例如:
1 2 | Class LibraryException(Exception)... Class LibraryException(Error)... |