On 06/15/2016 07:13 PM, tsbockman wrote:

Standardizing the error handling methods is also important for other
interoperability-related reasons:

     * If every third-party library designs a different error handling
method,
       people writing applications that depend on many libraries will
have to
       study the `checkedint` error signaling of each one, and make sure
that
       their code which interacts with each library knows how to detect and
       respond to its particular signaling mechanism.

       My design for `checkedint` reduces the number of
`checkedint`-specific
       signaling methods that need to be studied down to one (the sticky
flags
       policy). The other two policies are just using D's standard error-
       handling facilities, and don't require any user intervention anyway,
       unless you want to catch the exception for some reason.

       Even the sticky flags policy is only of concern for `nothrow
@nogc` APIs,
       which I suspect in practice will mostly mean game libraries.

     * The relative simplicity of my policy set has allowed me to
arrange them
       into a strict linear hierarchy, so that the results of mixing
policies
       is predictable and safe.

I don't agree with this. On the face of it, three built-in policies solve the matter of interoperability: if you want interop, use one of those. Done. But interop is not a reason to preclude any flexibility. -- Andrei

Reply via email to