Defensive Programming
CS 240 – Advanced Programming Concepts
Defensive Programming: Assertions
Defensive Programming
3
Programming Assumptions
4
Programming Assumptions Example
int binarySearch(int[] data, int searchValue) {
// What assumptions are we making about the parameter values?
…
}
5
Programming Assumptions Example
int binarySearch(int[] data, int searchValue) {
// What assumptions are we making about the parameter values?
…
}
6
Assertions
7
Assertion Examples
int binarySearch(int[] data, int searchValue) {
assert data != null;
assert isSorted(data);
…
}
String[] someMethod(int y, int z) {
assert z != 0;
int x = y / z;
assert x > 0 && x < 1024;
return new String[x];
}
8
Assertion Details
9
Alternate Assertion Form
10
int binarySearch(int[] data, int searchValue) {
assert data != null : ”binary search data is null”;
assert isSorted(data) : ”binary search data is not sorted”;
…
}
String[] someMethod(int y, int z) {
assert z != 0 : ”invalid z value”;
int x = y / z;
assert x > 0 && x < 1024 : x;
return new String[x];
}
Exceptions?
11
BLANK SLIDE
Defensive Programming: Parameter Checking
Parameter Checking Overview
14
Check Parameter Values
int binarySearch(int[] data, int searchValue) {
assert data != null;
assert isSorted(data);
…
}
int binarySearch(int[] data, int searchValue) {
if (data == null || !isSorted(data)) {
throw new InvalidArgumentException();
}
…
}
15
Assertions or Parameter Checking?
16
BLANK SLIDE