C++ Logo

std-proposals

Advanced search

Re: [std-proposals] Try-catch declaration

From: sasho648 <sasho648_at_[hidden]>
Date: Wed, 22 Nov 2023 16:13:25 +0200
To access the reference if it has thrown an exception.

On Wed, Nov 22, 2023 at 4:12 PM sasho648 <sasho648_at_[hidden]> wrote:

> It's UB - there is nothing else to add about it - don't know where you are
> inheriting all this.
>
> On Wed, Nov 22, 2023 at 3:51 PM Lénárd Szolnoki via Std-Proposals <
> std-proposals_at_[hidden]> wrote:
>
>> On Wed, 2023-11-22 at 14:16 +0200, sasho648 via Std-Proposals wrote:
>> > In my opinion if exceptions were used more it would be worthy to add
>> > my suggestion - your solution is too verbose.
>> >
>>
>> int f() {
>> decltype(&func()) ptr = nullptr;
>> try {
>> ptr = &func();
>> } catch(...) {}
>>
>> // use ptr here
>> }
>>
>> I'm strongly against this proposal, as it introduces the concept of
>> "uninitialized reference" that didn't exist before. Sure references can
>> become stale and thus invalid, but they are not invalid right after
>> their initialisation. This is essentially a null reference.
>>
>> The pointer makes it explicit that it might have a state other than
>> referring to an object, and therefore safer. It also makes it possible
>> (but not necessary) to check for this state.
>>
>> > On Wed, Nov 22, 2023 at 2:07 PM Lénárd Szolnoki via Std-Proposals
>> > <std-proposals_at_[hidden]> wrote:
>> > > On Wed, 2023-11-22 at 13:56 +0200, sasho648 via Std-Proposals
>> > > wrote:
>> > > > Because I only care about the exception thrown at `func()` and
>> > > > don't
>> > > > want to have exception handling for the rest of the code.
>> > >
>> > >
>> > > int f() {
>> > > const auto ptr = [&]() -> decltype(&func()) {
>> > > try {
>> > > return &func();
>> > > } catch (...) {
>> > > return nullptr;
>> > > }
>> > > }();
>> > >
>> > > // use ptr here, check for null, dereference, whatever
>> > > }
>> > >
>> > > >
>> > > > On Wed, Nov 22, 2023 at 1:54 PM Fabio Alemagna
>> > > > <falemagn_at_[hidden]>
>> > > > wrote:
>> > > > >
>> > > > >
>> > > > > Il mer 22 nov 2023, 12:50 sasho648 via Std-Proposals
>> > > > > <std-proposals_at_[hidden]> ha scritto:
>> > > > > > Ok use-case I was thinking is actually:
>> > > > > >
>> > > > > > int f() {
>> > > > > >
>> > > > > > try (auto &ref = func()) {
>> > > > > > } catch(...) {
>> > > > > > return -1;
>> > > > > > }
>> > > > > >
>> > > > > > // use ref here
>> > > > > > }
>> > > > >
>> > > > > Why would you want to use ref after the whole try-catch block?
>> > > > >
>> > > > > If func() does't throw, you can use ref right after its call,
>> > > > > within the try block itself.
>> > > > >
>> > >
>>
>> --
>> Std-Proposals mailing list
>> Std-Proposals_at_[hidden]
>> https://lists.isocpp.org/mailman/listinfo.cgi/std-proposals
>>
>

Received on 2023-11-22 14:13:38