Bug 3129 – Cannot take advantage of overriding Throwable.toString
Status
RESOLVED
Resolution
WORKSFORME
Severity
normal
Priority
P2
Component
druntime
Product
D
Version
D2
Platform
x86
OS
Windows
Creation time
2009-07-02T06:09:29Z
Last change time
2021-01-09T22:46:15Z
Keywords
bootcamp, patch
Assigned to
Sean Kelly
Creator
anonymous4
Comments
Comment #0 by dfj1esp02 — 2009-07-02T06:09:29Z
It's a pain when you set Throwable.file, toString function is completely bypassed by catching block in tryExec, so you can't do posponed error message generation. AFAIK, only Error takes advantage of setting file field, so it makes sense to restrict default error output to instances of Error class. No need to worry about losing this functionality since equivalent code is already in Throwable.toString.
dmain2.d, line 324
---
- if (e.file)
+ if (e.file && cast(Error)e)
---
Another minor issue is that both Throwable.toString and tryExec iterate through nested exceptions and output trace contexts, so if file field is not set, both of them are executed resulting into duplication of exception info.
Comment #1 by dfj1esp02 — 2009-07-02T06:14:37Z
Another possible solution is to change line 320
---
- catch (Throwable e)
+ catch (Error e)
---
so that unoverridden Throwable.toString is executed in catch(Object o) block.
Comment #2 by tiberiulepadatu14 — 2018-10-21T14:17:30Z
Bug not reproducible.
Comment #3 by pro.mathias.lang — 2021-01-09T22:46:15Z
Indeed, the code has greatly evolved since then and we can mark this as WORKSFORME.