On 10/15/2012 12:03 PM, Tyler Jameson Little wrote:

>I did my best in grokking
> std.traits, but I may have missed some subtleties about what the
> templates are actually testing.

You have mentioned needing an allMembers that excluded functions in one of your other posts. The following thread was exactly about that. I can never remember the solution, but I found it again: :)


http://www.digitalmars.com/d/archives/digitalmars/D/learn/Getting_only_the_data_members_of_a_type_34086.html

(Although JSON is not mentioned in there, that thread has been inspired by marshalling as well. :))

> I used asserts and contracts to validate input, so the following would
> throw an AssertError:
>
> int x = unmarshalJSON!int(`"5"`);

std.exception.enforce is the right choice in that case. You don't want the checks to disappear when asserts are turned off.

> I wasn't sure if this is bad style, since AssertError is in
> core.exception. If this is considered bad style in D, I can create a
> JSONMarshalException and throw that instead.

That makes sense too. There is enforceEx() to throw a specific type of exception.

Ali

Reply via email to