[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: svn commit: r1849737 - in /subversion/trunk/subversion/bindings/cxx: include/svnxx.hpp include/svnxx/exception.hpp src/aprwrap/pool.hpp src/exception.cpp src/private/exception-private.hpp tests/test_exceptions.cpp

From: Branko Čibej <brane_at_apache.org>
Date: Wed, 26 Dec 2018 23:28:24 +0100

On 26.12.2018 22:41, Branko Čibej wrote:
> On 26.12.2018 19:50, Daniel Shahaf wrote:
>> brane_at_apache.org wrote on Wed, 26 Dec 2018 04:28 +0000:
>>> Reimplement exceptions in SVN++.
>>>
>>> Instead of extracting error messages from the svn_error_t when the exception
>>> is created, keep the svn_error_t embedded in the exception and use its contents
>>> only when needed.
>>> +++ subversion/trunk/subversion/bindings/cxx/include/svnxx/exception.hpp Wed Dec 26 04:28:25 2018
>>> @@ -31,6 +31,46 @@
>>> +/**
>>> + * @defgroup svnxx_exceptions Exceptions
>>> + *
>>> + * Exceptions in SVN++
>>> + * ===================
>>> + *
>>> + * SVN++ uses exceptions for the following purposes:
>>> + * @li Reporting memory allocation failure; where Subversion's
>>> + * default hehaviour is to abort when an allocation from an APR
>>> + * pool fails, SVN++ throws an exception instead.
>>> + * @li Reporting errors; Subversion's error messages are wrapped in
>>> + * exceptions.
>>> + * @li Reporting cancelled operations; an operation that was
>>> + * cancelled from user code will report this by throwing a
>>> + * specific exception type.
>>> + * @li Terminating iteration; user-level callbacks may throw a
>>> + * specific exception type to cancel an ongoing operation that
>>> + * is generating the callback messages. Other exceptions from
>>> + * user-level callbacks will be propagated back to the calling
>>> + * application.
>> This part is an excellent overview; if it's not already in the C doxygen
>> docs or in HACKING, it should be (mutatis mutandis).
>>
>>> + * Exception Hierarchy
>>> + * -------------------
>>> + *
>>> + * All SVN++ exceptions are ultimately derived from @c std:::exception.
>>> + *
>>> + * * <em>std::exception</em>
>>> + * + <em>std::runtime_error</em>
>>> + * - apache::subversion::svnxx::allocation_failed\n
>>> + * Thrown when memory cannot be allocated from an APR pool
>>> + * + apache::subversion::svnxx::error\n
>>> + * Thrown when an operation failed (see @ref svn_error_t)
>>> + * - apache::subversion::svnxx::canceled\n
>>> + * Thrown when an operation was canceled
>>> + * + apache::subversion::svnxx::cancel\n
>>> + * Thrown by user callbacks to terminate iteration
>> I think the last two names here are too similar; it'll be way too easy
>> to mis-tab-complete them for each other. Suggest to rename the second
>> one to stop_iteration to match the name of SVN_ERR_STOP_ITERATION.
> Actually users can't create objects of type 'svn::canceled' — or at
> least not without a lot of effort, as there are no public constructors.
> I would hope a smart IDE would notice, or else at least a smart user
> will. :)
>
> But yes, I hear you. stop_iteration is a good suggestion.

Out of interest ... where is SVN_ERR_STOP_ITERATION defined? I can't
find it on trunk.

-- Brane
Received on 2018-12-26 23:28:33 CET

This is an archived mail posted to the Subversion Dev mailing list.