On 02/12/2011 02:44 PM, Jonathan M Davis wrote:
On Saturday 12 February 2011 05:23:06 spir wrote:
Hello,

Is there a way to specify what error to throw using (a variant of) assert:
      assert(n>  0, new ValueError("..."));

(Sure, one can write:
      if (n<= 0)
          throw new ValueError("..."));
but the same remark applies to plain assert: the whole point of assert is
to have it as builtin feature with clear application field&  well-known
semantics, shared by the community of D programmers.)

You mean std.exception.enforce?

assert throws AssertError. Regardless, you probably shouldn't be creating new
Error types generally. You're _not_ supposed to catch errors and try and handle
them, so there really isn't any benefit in creating new Error types generally
anyway. If you want to assert, use assert. Let it be AssertError.

If you want to throw a specific Exception type, and you want it to be a one-
liner, use enforce. Be aware, however, that enforce is lazy, so any function
which uses it can't currently be inlined.

All right, thank you for this clear info, Jonathan. (Havn't used enforce yet, seems to be cool.)

Denis
--
_________________
vita es estrany
spir.wikidot.com

Reply via email to