[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-trivial] [Qemu-devel] [PATCH] get_tmp_filename: add explicit e
From: |
Fabien Chouteau |
Subject: |
Re: [Qemu-trivial] [Qemu-devel] [PATCH] get_tmp_filename: add explicit error message |
Date: |
Mon, 04 Feb 2013 14:33:18 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux i686; rv:17.0) Gecko/20130106 Thunderbird/17.0.2 |
On 02/04/2013 01:24 PM, Markus Armbruster wrote:
> Fabien Chouteau <address@hidden> writes:
>
>> On 02/04/2013 11:34 AM, Markus Armbruster wrote:
>>
>> Why? The caller doesn't know the difference between Windows/Linux
>> implementation. And the error handling would have to be duplicated.
>
> The function's (implied) contract is to return an error code without
> printing anything. If you want to change the contract to include
> reporting the error, you need to implement it both for both arms of the
> #ifdef. You also have to demonstrate that all callers are happy with
> the change of contract.
>
> Regardless, printing to stderr is wrong. The function can be called on
> behalf of a monitor command, and then the error needs to be printed to
> the correct monitor. error_report() can do that for you, and more.
>
Alright, so I will use error_report() and do it for both Linux and Windows.
>> It's not the first time I add error output in Windows code. Specially in
>> block/, when there's an error, the only thing you get is: "operation not
>> permitted". It's not very helpful and you have to dig in the code to
>> find which function failed.
>
> Good error reporting is hard. Knowledge about the error and its context
> gets lost as you move up the call chain. Knowledge about how to report
> errors gets lost as you move down.
>
You're right, and in my opinion, no error reporting is the worst case.
--
Fabien Chouteau