On 2/19/12 7:31 AM, Timon Gehr wrote:
On 02/19/2012 09:26 AM, H. S. Teoh wrote:
On Sat, Feb 18, 2012 at 11:52:00PM -0800, Jonathan M Davis wrote:
[...]
So, while at first glance, it seems like a good idea, I think that it
has too many issues as-is to work. It might be possible to adjust the
idea to make it workable though. Right now, it's possible to do it via
mixins or calling a function inside the catch, but doing something
similar to this would certainly be nice, assuming that we could sort
out the kinks.
[...]

I have an idea. What about "signature constraints" for catch, ala
template signature constraints? Something like this:

try {
...
} catch(IOException e)
if (e.errno in subsetYouWantToHandle)
{
...
}

Just using IOException as an example. The idea is to allow arbitrary
expressions in the constraint so whatever doesn't satisfy the constraint
will be regarded as "not caught", even if the base type matches.


T


Nice.

That helps. This quite nicely illustrates that types don't necessarily need to proliferate. Something not much more constraining can be done today:

try {
  ...
} catch(IOException e)
{
  if (e.errno !in subsetYouWantToHandle) throw e;
  ...
}


Andrei

Reply via email to