Java Glossary : assertions

CMP home Java glossary home Menu no menu Last updated 2004-06-28 by Roedy Green ©1996-2004 Canadian Mind Products

Java definitions: 0-9 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

You are here : home : Java Glossary : A words : assertions.

assertions
You do three types of sanity checking in your computer programs:
  1. to check for expected error conditions.
  2. to verify your code does not contain bugs.
  3. to make sure when your program goes insane, you find out about it as soon as possible before it destroys all traces of what went wrong.
For (1) you typically code explicit checks.

For (2) you use asserts which can be turned off once you are sure the code is solid.

For (3) you trust the run time array subscript out of bounds and null pointer checking.

Bertrand Meyer in Eiffel pioneered the use of structured assertions in a system he called Programming By Contract. These serve both to document the preconditions (require) on parameters coming into a method, and the guaranteed characteristics of the result (ensure). Unfortunately, Java still does not support them. They can be crudely added with the JaWa preprocessor.

Java 1.4.1+ has a feature Sun calls assertions but they are so pathetic they don't deserve the name. It is as though Sun wanted to claim that Java has assertions without doing any work to implement them and not caring if the final product was actually of any use. If Sun wants to try again, they should look at how Eiffel assertions work.

They are new language feature, not a new class. Read about

Enabling

The main feature is the ability to turn them on and off at run time. This required a slight modification to the class file format. You use the -ea switch on the java.exe command line to enable or -da to disable assertion checking. To compile, you need the -source 1.4 switch on the javac.exe command line.

Coding

You code them like this:

assert a > b : "a must be bigger than b";

The second expression can be anything you would feed to printLn or it can be left out.

To mark a place in your code you should never get, you can code an assertion that always fails like this:

assert false : "Fell out bottom of loop without finding elt.";


CMP logo
CMP_home
home
Canadian Mind Products CSS
HTML Checked!
ICRA ratings logo
mindprod.com IP:[24.87.56.253]
Your IP:[80.134.30.163]
You are visitor number 1429.
Please send errors, omissions and suggestions
to improve this page to Roedy Green.
You can get a fresh copy of this page from: or possibly from your local J: drive mirror:
http://mindprod.com/jgloss/assertions.html J:\mindprod\jgloss\assertions.html