[prev in list] [next in list] [prev in thread] [next in thread] 

List:       php-internals
Subject:    [PHP-DEV] Throwable::addSuppressed()
From:       85.179.132.148
Date:       2015-07-28 21:51:39
Message-ID: E6.64.22108.E69F7B55 () pb1 ! pair ! com
[Download RAW message or body]

Hi PHP

So I read that there's this Throwable interface coming. Great! How about
extending it with one further method:

void Throwable::addSuppressed(Throwable exception)

Semantic is the same as Java's Throwable.addSuppressed() ¹.

Why? Well consider a code fragment which wants to close a resource
during an exception:

} catch (Exception $e1) {
    try {
        $resource->close();
        throw $e1;

    } catch (ResourceException $e2) {
        // The information about $e2 is lost.
        throw $e1;
    }
}

Currently PHP has no method to propagate both $e1 and $e2. With
Throwable::addSuppressed() $e2 could be added as a suppressed exception
to $e1:

} catch (Exception $e1) {
    try {
        $resource->close();

    } catch (ResourceException $e2) {
        e1->addSuppressed($e2);

    }
    throw $e1;
}

To make this information useful (for e.g. a logger) there's one further
method needed:

Throwable[] Throwable::getSuppressed()

So PHP, what do you think, might a RFC find acceptance?

Best wishes
Markus Malkusch

[1]:
http://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html#addSuppressed-java.lang.Throwable-

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic