Checked vs unchecked exceptions

Guillaume Boucher via Digitalmars-d digitalmars-d at puremagic.com
Mon Jun 26 14:00:24 PDT 2017


On Monday, 26 June 2017 at 18:42:24 UTC, Ola Fosheim Grøstad 
wrote:
> On Monday, 26 June 2017 at 17:44:15 UTC, Guillaume Boucher 
> wrote:
>> Java uses A, Rust/Go use B.  C++ uses B to some extend (e.g. 
>> in std::experimental::filesystem).
>
> The C++17 filesystem api provides two alternatives, the 
> standard filesystem_error exception and an output-paramater for 
> capturing os-specific error codes. I'm not quite sure why they 
> provide both, but I guess performance and the ability to 
> compile for  runtimes with exceptions turned off could explain 
> it.

Quoting the C++ standard:

> Filesystem library functions often provide two overloads, one 
> that
> throws an exception to report file system errors, and another 
> that sets an error_code.
> 
> [Note: This supports two common use cases:
>
>    - Uses where file system errors are truly exceptional
>      and indicate a serious failure.
>      Throwing an exception is an appropriate response.
>    - Uses where file system errors are routine
>      and do not necessarily represent failure.
>      Returning an error code is the most appropriate response.
>      This allows application specific error handling, including 
> simply ignoring the error.
>
>  -- end note]

I would say that the overload without exceptions is the 
"standard" one.

> It is rather clear though that C++ std lib relies heavily on 
> exceptions.

[Citation needed]



More information about the Digitalmars-d mailing list