digitalmars.D.bugs - Exceptions part 1: DBC
- Sean Kelly (61/61) Apr 13 2005 # /*
- Sean Kelly (3/3) Apr 14 2005 FWIW, this first example was more to promote discussion than an actual b...
# /* # This example shows that the class invariant and postcondition are # not evaluated if scope exits via an exception. if the exception # is recoverable it is possible that the function postcondition has # not been met and that the application is in an invalid state. The # class invariant will be tested the next time a public method is # called, but this may still be a while. # */ # # import std.c.stdio; # # class DBCTest # { # this() # { # cnt = 0; # } # # void f1() # in # { # printf( "in\n" ); # } # out # { # printf( "out\n" ); # } # body # { # printf( "body\n", cnt ); # if( cnt++ > 0 ) # throw new Exception( "DBCTest Exception" ); # } # # invariant # { # printf( "invariant\n" ); # } # # int cnt; # } # # void main() # { # DBCTest d = new DBCTest(); # # while( true ) # { # try # { # d.f1(); # printf( "*** loop ***\n" ); # } # catch( Exception e ) # { # printf( "DBC test caught: %.*s \n", e.toString() ); # break; # } # } # printf( "done\n" ); # }
Apr 13 2005
FWIW, this first example was more to promote discussion than an actual bug report. AFAIK this is working as intended. Sean
Apr 14 2005