Testing and Debugging
Result Status
A small result object can carry both a success flag and a value.
Result Status
ResultStatus.java
public class ResultStatus {
record DivideResult(boolean ok, int value) {}
static DivideResult divide(int numerator, int denominator) {
if (denominator == 0) {
return new DivideResult(false, 0);
}
return new DivideResult(true, numerator / denominator);
}
public static void main(String[] args) {
int denominator = ;
DivideResult result = divide(80, denominator);
System.out.println("ok=" + result.ok() + " value=" + result.value());
}
}
public class ResultStatus {
record DivideResult(boolean ok, int value) {}
static DivideResult divide(int numerator, int denominator) {
if (denominator == 0) {
return new DivideResult(false, 0);
}
return new DivideResult(true, numerator / denominator);
}
public static void main(String[] args) {
int denominator = ;
DivideResult result = divide(80, denominator);
System.out.println("ok=" + result.ok() + " value=" + result.value());
}
}
public class ResultStatus {
record DivideResult(boolean ok, int value) {}
static DivideResult divide(int numerator, int denominator) {
if (denominator == 0) {
return new DivideResult(false, 0);
}
return new DivideResult(true, numerator / denominator);
}
public static void main(String[] args) {
int denominator = ;
DivideResult result = divide(80, denominator);
System.out.println("ok=" + result.ok() + " value=" + result.value());
}
}
status object
A status object lets a method return success information without throwing for expected failures.
checked result
The caller checks the status before trusting the computed value.