Thread overview
exception messages
Oct 24, 2012
Greg
Oct 24, 2012
Ali Çehreli
Oct 24, 2012
Andrej Mitrovic
Oct 24, 2012
Greg
Oct 24, 2012
H. S. Teoh
October 24, 2012
I'm attempting to learn D through a personal project, and can't figure out how to get the message from an exception.  I've basically defined a custom subclass of Exception to represent when invalid inputs are provided, and would like to have a master catch block that handles them, but I can't find API docs for Throwable or Exception within the Phobos Library Reference.   In particular, I can't find API definitions for those classes in either std.exception or core.exception.  Where else should I be looking?
October 24, 2012
On 10/23/2012 05:51 PM, Greg wrote:
> I'm attempting to learn D through a personal project, and can't figure
> out how to get the message from an exception. I've basically defined a
> custom subclass of Exception to represent when invalid inputs are
> provided, and would like to have a master catch block that handles them,
> but I can't find API docs for Throwable or Exception within the Phobos
> Library Reference. In particular, I can't find API definitions for those
> classes in either std.exception or core.exception. Where else should I
> be looking?

There is a ddoc problem at dlang.org but it is defined in object.d:

  http://dlang.org/phobos/object.html#Throwable

On my system, the .di of that module is found here:

  /usr/include/d/dmd/druntime/import/object.di

Here is the current version of the file:


https://github.com/D-Programming-Language/druntime/blob/master/src/object_.d

Ali
October 24, 2012
On 10/24/12, Greg <greg.steffensen@gmail.com> wrote:
> I'm attempting to learn D through a personal project, and can't figure out how to get the message from an exception.

I don't know why Throwable is not documented (http://dlang.org/phobos/object.html#Throwable), but you can use the .msg field:

import std.exception;
import std.stdio;

void main()
{
    try {
        enforce(0, "message");
    }
    catch (Exception ex)
    {
        writeln(ex.msg);
    }
}

See the DMD2/src/druntime/src/object_.d file for the class definition of Throwable and Exception, Throwable has these fields:

    string      msg;
    string      file;
    size_t      line;
    TraceInfo   info;
    Throwable   next;
October 24, 2012
Awesome, that's more informative than the API docs would have been anyway.

BTW, another API docs problem I noticed is that on the main page, the module list in the sidebar doesn't match the module list in the page content (the sidebar has more modules, including std.exception).

Thanks!

On Wednesday, 24 October 2012 at 01:03:12 UTC, Andrej Mitrovic wrote:
> On 10/24/12, Greg <greg.steffensen@gmail.com> wrote:
>> I'm attempting to learn D through a personal project, and can't
>> figure out how to get the message from an exception.
>
> I don't know why Throwable is not documented
> (http://dlang.org/phobos/object.html#Throwable), but you can use the
> .msg field:
>
> import std.exception;
> import std.stdio;
>
> void main()
> {
>     try {
>         enforce(0, "message");
>     }
>     catch (Exception ex)
>     {
>         writeln(ex.msg);
>     }
> }
>
> See the DMD2/src/druntime/src/object_.d file for the class definition
> of Throwable and Exception, Throwable has these fields:
>
>     string      msg;
>     string      file;
>     size_t      line;
>     TraceInfo   info;
>     Throwable   next;


October 24, 2012
On Wed, Oct 24, 2012 at 03:03:02AM +0200, Andrej Mitrovic wrote:
> On 10/24/12, Greg <greg.steffensen@gmail.com> wrote:
> > I'm attempting to learn D through a personal project, and can't figure out how to get the message from an exception.
> 
> I don't know why Throwable is not documented (http://dlang.org/phobos/object.html#Throwable), but you can use the .msg field:
[...]

Neither Throwable nor Exception are adequately documented. I decided to remedy that:

	https://github.com/D-Programming-Language/druntime/pull/337

:)


T

-- 
Life is unfair. Ask too much from it, and it may decide you don't deserve what you have now either.