www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - throwing a RangeError in non-release mode

reply "Steven Schveighoffer" <schveiguy yahoo.com> writes:
When not in release mode, accessing an out-of-bounds element in an array  
throws a RangeError.  I would like to do the same thing in dcollections  
when indexing, but the only tool I know of that enables throwing an error  
in non-release mode is assert, and that only throws an assert error.

Does anyone know how to throw an arbitrary exception on an error when not  
in release mode?

-Steve
Jul 02 2010
parent "Simen kjaeraas" <simen.kjaras gmail.com> writes:
Steven Schveighoffer <schveiguy yahoo.com> wrote:

 When not in release mode, accessing an out-of-bounds element in an array  
 throws a RangeError.  I would like to do the same thing in dcollections  
 when indexing, but the only tool I know of that enables throwing an  
 error in non-release mode is assert, and that only throws an assert  
 error.

 Does anyone know how to throw an arbitrary exception on an error when  
 not in release mode?

Untested code. Also, horrible: void throwInNonRelease( T = Exception )( lazy bool test, lazy string msg ) { try { assert( test ); } catch ( AssertError ) { throw new T( msg ); } } -- Simen
Jul 02 2010