Bug 8140 – allow to catch exceptions by implemented interface
Status
RESOLVED
Resolution
WONTFIX
Severity
enhancement
Priority
P2
Component
druntime
Product
D
Version
D2
Platform
All
OS
All
Creation time
2012-05-24T05:22:09Z
Last change time
2020-01-16T13:47:53Z
Assigned to
No Owner
Creator
luka8088
Comments
Comment #0 by luka8088 — 2012-05-24T05:22:09Z
Now we can only catch by class that is derived from Throwable. This prevents logical generic *grouping* and catching by *group*. As discussed in #d on freenode irc from 24-05-2012 13:20:00 to 24-05-2012 13:56:00.
For example:
// assume that IThrowable is in druntime
interface IMyException1: IThrowable {}
interface IMyException2: IThrowable {}
interface IMyException3: IThrowable {}
class MyException1: Exception, IMyException1 {}
class MyException2: Exception, IMyException1, IMyException2 {}
class MyException3: Exception, IMyException1 ,IMyException3 {}
class MyException4: Exception, IMyException3 {}
try {
throw new MyException2();
} catch (IMyException3) {
// catches MyException3 or MyException4
}
Comment #1 by pro.mathias.lang — 2020-01-16T13:47:53Z
Closing as WONTFIX.
Rationale: This is an enhancement request, but there doesn't seem to be much interest in it, and the rationale is limited. Proper exception hierarchy is something that is often theorized but very rare in practice, and D is no exception (pun intended).
If you strongly feel like we should pursue this, feel free to open an DIP: https://github.com/dlang/DIPs