[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 05/11] qemu.py: Use custom exceptions rather tha
From: |
Eduardo Habkost |
Subject: |
Re: [Qemu-devel] [PATCH 05/11] qemu.py: Use custom exceptions rather than Exception |
Date: |
Thu, 20 Jul 2017 15:27:53 -0300 |
User-agent: |
Mutt/1.8.0 (2017-02-23) |
On Thu, Jul 20, 2017 at 06:28:09PM +0200, Lukáš Doktor wrote:
> The naked Exception should not be widely used. It makes sense to be a
> bit more specific and use better-suited custom exceptions. As a benefit
> we can store the full reply in the exception in case someone needs it
> when catching the exception.
>
> Signed-off-by: Lukáš Doktor <address@hidden>
> ---
> scripts/qemu.py | 17 +++++++++++++++--
> 1 file changed, 15 insertions(+), 2 deletions(-)
>
> diff --git a/scripts/qemu.py b/scripts/qemu.py
> index 5948e19..2bd522f 100644
> --- a/scripts/qemu.py
> +++ b/scripts/qemu.py
> @@ -19,6 +19,19 @@ import subprocess
> import qmp.qmp
>
>
> +class MonitorResponseError(qmp.qmp.QMPError):
> + '''
> + Represents erroneous QMP monitor reply
> + '''
> + def __init__(self, reply):
> + try:
> + desc = reply["error"]["desc"]
> + except KeyError:
> + desc = reply
> + super(MonitorResponseError, self).__init__(desc)
> + self.reply = reply
This would require every user of self.reply to first check if
it's a string or dictionary. All because of the "Monitor is
closed" case below:
> +
> +
> class QEMUMachine(object):
> '''A QEMU VM'''
>
> @@ -197,9 +210,9 @@ class QEMUMachine(object):
> '''
> reply = self.qmp(cmd, conv_keys, **args)
> if reply is None:
> - raise Exception("Monitor is closed")
> + raise qmp.qmp.QMPError("Monitor is closed")
Should we really use the same exception type for this, if it's
not really a QMP monitor error reply, and won't even have a real
QMP reply in self.reply?
> if "error" in reply:
> - raise Exception(reply["error"]["desc"])
> + raise MonitorResponseError(reply)
> return reply["return"]
>
> def get_qmp_event(self, wait=False):
> --
> 2.9.4
>
--
Eduardo
- [Qemu-devel] [PATCH 03/11] qemu.py: Use iteritems rather than keys(), (continued)
- [Qemu-devel] [PATCH 03/11] qemu.py: Use iteritems rather than keys(), Lukáš Doktor, 2017/07/20
- [Qemu-devel] [PATCH 02/11] qemu.py: Avoid dangerous arguments, Lukáš Doktor, 2017/07/20
- [Qemu-devel] [PATCH 08/11] qmp.py: Avoid "has_key" usage, Lukáš Doktor, 2017/07/20
- [Qemu-devel] [PATCH 05/11] qemu.py: Use custom exceptions rather than Exception, Lukáš Doktor, 2017/07/20
- Re: [Qemu-devel] [PATCH 05/11] qemu.py: Use custom exceptions rather than Exception,
Eduardo Habkost <=
- Re: [Qemu-devel] [PATCH 05/11] qemu.py: Use custom exceptions rather than Exception, Lukáš Doktor, 2017/07/21
- Re: [Qemu-devel] [PATCH 05/11] qemu.py: Use custom exceptions rather than Exception, Eduardo Habkost, 2017/07/21
- Re: [Qemu-devel] [PATCH 05/11] qemu.py: Use custom exceptions rather than Exception, Lukáš Doktor, 2017/07/24
- Re: [Qemu-devel] [PATCH 05/11] qemu.py: Use custom exceptions rather than Exception, Eduardo Habkost, 2017/07/24
- Re: [Qemu-devel] [PATCH 05/11] qemu.py: Use custom exceptions rather than Exception, Lukáš Doktor, 2017/07/25
- [Qemu-devel] [PATCH 09/11] qmp.py: Avoid overriding a builtin object, Lukáš Doktor, 2017/07/20