digitalmars.D - Which exception
- Tom <tom nospam.com> Oct 29 2006
- Frits van Bommel <fvbommel REMwOVExCAPSs.nl> Oct 29 2006
- Tom <tom nospam.com> Oct 30 2006
- Frits van Bommel <fvbommel REMwOVExCAPSs.nl> Oct 30 2006
- Tom <tom nospam.com> Oct 30 2006
Hey,
lets say I have something like the following:
try {
// Code that throws some exception I don't know of.
} catch (Exception ex) {
writefln(ex.classinfo.name); // works but it's not what I need
}
Is there some way to get the name of the class 'ex' is instance of (the
derived class and not the base class)?
Thanks in advance,
--
Tom;
Oct 29 2006
Tom wrote:Hey, lets say I have something like the following: try { // Code that throws some exception I don't know of. } catch (Exception ex) { writefln(ex.classinfo.name); // works but it's not what I need } Is there some way to get the name of the class 'ex' is instance of (the derived class and not the base class)?
I'm sorry, but what *is* it that you need if not the above? import std.stdio; class DerivedException : Exception { this() { super(""); } } void main() { try { // Code that throws some exception. throw new DerivedException; } catch (Exception ex) { writefln(ex.classinfo.name); // writes "DerivedException" } } The above code writes "DerivedException" to stdout, which is the name of the most derived class ex is an instance of. Am I missing something?
Oct 29 2006
== Quote from Frits van Bommel (fvbommel REMwOVExCAPSs.nl)'s articleTom wrote:Hey, lets say I have something like the following: try { // Code that throws some exception I don't know of. } catch (Exception ex) { writefln(ex.classinfo.name); // works but it's not what I need } Is there some way to get the name of the class 'ex' is instance of (the derived class and not the base class)?
import std.stdio; class DerivedException : Exception { this() { super(""); } } void main() { try { // Code that throws some exception. throw new DerivedException; } catch (Exception ex) { writefln(ex.classinfo.name); // writes "DerivedException" } } The above code writes "DerivedException" to stdout, which is the name of the most derived class ex is an instance of. Am I missing something?
No, you're right. It works here, on a WinXP machine. When I get home later, I'll test it on my Linux, where it didn't work. I hope it's only my mistake and not a linux-specific bug. Regards, -- Tom;
Oct 30 2006
Tom wrote:== Quote from Frits van Bommel (fvbommel REMwOVExCAPSs.nl)'s article
The above code writes "DerivedException" to stdout, which is the name of the most derived class ex is an instance of. Am I missing something?
No, you're right. It works here, on a WinXP machine. When I get home later, I'll test it on my Linux, where it didn't work. I hope it's only my mistake and not a linux-specific bug.
Just tried it in my VMWare window: urxae ubuntu:~/tmp$ cat test.d import std.stdio; class DerivedException : Exception { this() { super(""); } } void main() { try { // Code that throws some exception. throw new DerivedException; } catch (Exception ex) { writefln(ex.classinfo.name); // writes "DerivedException" } } urxae ubuntu:~/tmp$ dmd -run test.d DerivedException urxae ubuntu:~/tmp$ uname -a Linux ubuntu 2.6.17-10-386 #2 Fri Oct 13 18:41:40 UTC 2006 i686 GNU/Linux So that's not it either.
Oct 30 2006
Frits van Bommel wrote:Tom wrote:== Quote from Frits van Bommel (fvbommel REMwOVExCAPSs.nl)'s article
The above code writes "DerivedException" to stdout, which is the name of the most derived class ex is an instance of. Am I missing something?
No, you're right. It works here, on a WinXP machine. When I get home later, I'll test it on my Linux, where it didn't work. I hope it's only my mistake and not a linux-specific bug.
Just tried it in my VMWare window: urxae ubuntu:~/tmp$ cat test.d import std.stdio; class DerivedException : Exception { this() { super(""); } } void main() { try { // Code that throws some exception. throw new DerivedException; } catch (Exception ex) { writefln(ex.classinfo.name); // writes "DerivedException" } } urxae ubuntu:~/tmp$ dmd -run test.d DerivedException urxae ubuntu:~/tmp$ uname -a Linux ubuntu 2.6.17-10-386 #2 Fri Oct 13 18:41:40 UTC 2006 i686 GNU/Linux So that's not it either.
Shit! the same here. I could swear that yesterday I had code that failed to perform correctly on the topic. Today I can't reproduce it, shame on me (maybe I'm hallucinating). It'll have to be next time (hope not) :( Thanks anyway! -- Tom;
Oct 30 2006








Tom <tom nospam.com>