Java Reference
In-Depth Information
if
(x % 2 == 0) {
...
}
else
{ // { x % 2 == 1 }
...
You can now write this code this way:
if
(x%2==0) {
...
}
else
{
assert
x%2==1: "x
= "
+
x
;
...
If, for some reason, the assertion of the assert statement (the
boolean-expres-
sion
) should ever be false at that point during execution, the program will abort
with a message, and you will know that there is a problem.
The assertion statement is intended to be used for internal checking of a pro-
gram while a program is being developed. You are encouraged to leave assertions
in a program when it is completed just in case all bugs have not been found and
corrected. But assertions are not intended to be used to alert a user of a program
to errors they have made. For such problems, the normal error-handling mecha-
nisms should be used.
For example, suppose we are writing a private method, called only by our
own methods, that has a precondition
0<n<100
. We can use an assert statement
to check the precondition, as shown here:
/** =
English equivalent of
n, for 0 <n<100 */
private static
String anglicize(
int
n) {
assert
0<n&&n<100: "n is " + n;
...
However, if the method is
public
and you have no control over the places
from which it is called, it is better to throw the appropriate exception:
/** =
English equivalent of
n, for 0 < n < 100
Throw an
IllegalArgumentException
if
n
out of range
*/
private static
String anglicize(
int
n) {
if
(0 >= n || n >= 100)
{
throw new
IllegalArgumentException("n is: " + n); }
...
Throw statements are discussed in Chap. 10 on
Exception handling
. Do not
be concerned if you do not know about exceptions; if you want to test a parame-
ter's precondition, just use the throw statement shown above, putting as the argu-
ment of the constructor of
IllegalArgumentException
a string that explains
the problem.
Generally, you can use the assert statement to test loop invariants, postcon-
ditions of methods, and other assertions that you previously wrote as comments.
Search WWH ::
Custom Search