Message ID | 20201006235817.3280413-18-jsnow@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | python/qemu: strictly typed mypy conversion, pt2 | expand |
On 10/7/20 1:58 AM, John Snow wrote: > Use the "from ..." phrasing when re-raising errors to preserve their > initial context, to help aid debugging when things go wrong. > > This also silences a pylint 2.6.0+ error. > > Signed-off-by: John Snow <jsnow@redhat.com> > --- > python/qemu/qmp.py | 9 +++++---- > 1 file changed, 5 insertions(+), 4 deletions(-) > > diff --git a/python/qemu/qmp.py b/python/qemu/qmp.py > index 9223307ed81..d911999da1f 100644 > --- a/python/qemu/qmp.py > +++ b/python/qemu/qmp.py > @@ -181,10 +181,11 @@ def __get_events(self, wait: Union[bool, float] = False) -> None: > self.__sock.settimeout(wait) > try: > ret = self.__json_read(only_event=True) > - except socket.timeout: > - raise QMPTimeoutError("Timeout waiting for event") > - except: > - raise QMPConnectError("Error while reading from socket") > + except socket.timeout as err: > + raise QMPTimeoutError("Timeout waiting for event") from err > + except Exception as err: > + msg = "Error while reading from socket" > + raise QMPConnectError(msg) from err > if ret is None: > raise QMPConnectError("Error while reading from socket") > self.__sock.settimeout(None) > Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Am 07.10.2020 um 01:58 hat John Snow geschrieben: > Use the "from ..." phrasing when re-raising errors to preserve their > initial context, to help aid debugging when things go wrong. > > This also silences a pylint 2.6.0+ error. > > Signed-off-by: John Snow <jsnow@redhat.com> I don't really understand what this improves compared to the implicit chaining we got before, but if pylint says so... Reviewed-by: Kevin Wolf <kwolf@redhat.com>
On 10/7/20 7:21 AM, Kevin Wolf wrote: > Am 07.10.2020 um 01:58 hat John Snow geschrieben: >> Use the "from ..." phrasing when re-raising errors to preserve their >> initial context, to help aid debugging when things go wrong. >> >> This also silences a pylint 2.6.0+ error. >> >> Signed-off-by: John Snow <jsnow@redhat.com> > > I don't really understand what this improves compared to the implicit > chaining we got before, but if pylint says so... > > Reviewed-by: Kevin Wolf <kwolf@redhat.com> > Yeah, it's a pretty minimal change. Depending on the context, I think it makes a bigger difference depending on how far away you are from the error you are re-raising, but I couldn't find a great real-world example for you right now. In summary, it changes this line: "During handling of the above exception, another exception occurred:" to this one: "The above exception was the direct cause of the following exception:" Which disambiguates between wrapping an exception with a more semantically meaningful exception class, vs. your handler code itself faulted. Minor change, I know. You are also allowed to use "from None" to suppress the chain. I use this in the QAPI series at one point because I felt the underlying error was not useful to see in the traceback. I see the pylint change as forcing you not to rely on the implicit chaining. Eh, fine. --js
diff --git a/python/qemu/qmp.py b/python/qemu/qmp.py index 9223307ed81..d911999da1f 100644 --- a/python/qemu/qmp.py +++ b/python/qemu/qmp.py @@ -181,10 +181,11 @@ def __get_events(self, wait: Union[bool, float] = False) -> None: self.__sock.settimeout(wait) try: ret = self.__json_read(only_event=True) - except socket.timeout: - raise QMPTimeoutError("Timeout waiting for event") - except: - raise QMPConnectError("Error while reading from socket") + except socket.timeout as err: + raise QMPTimeoutError("Timeout waiting for event") from err + except Exception as err: + msg = "Error while reading from socket" + raise QMPConnectError(msg) from err if ret is None: raise QMPConnectError("Error while reading from socket") self.__sock.settimeout(None)
Use the "from ..." phrasing when re-raising errors to preserve their initial context, to help aid debugging when things go wrong. This also silences a pylint 2.6.0+ error. Signed-off-by: John Snow <jsnow@redhat.com> --- python/qemu/qmp.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-)