On Thu, Jul 25, 2024 at 6:56 PM sebb <seb...@gmail.com> wrote: > > On Thu, 25 Jul 2024 at 17:46, Gary Gregory <garydgreg...@gmail.com> wrote: > > > > Java assertions only make sense in specific cases. > > > > Never in test code, use JUnit for that (or TestNG). > > > > It might make sense in low level libraries to enable some semantic checking > > which can be enabled on the CLI. This might be more convenient instead of > > "if debug is on AND some condition then throw a runtime exception". > > > > The above would be orthogonal to using a logging framework. > > > > In general though, I don't use Java's assert keyword. > > What about the following? > > https://github.com/apache/commons-io/blob/c155293776f49eef93547aca9cf181c8a0591cad/src/main/java/org/apache/commons/io/input/ReadAheadInputStream.java#L488 > https://github.com/apache/commons-io/blob/c155293776f49eef93547aca9cf181c8a0591cad/src/main/java/org/apache/commons/io/input/ReadAheadInputStream.java#L498 > > https://github.com/apache/commons-io/blob/c155293776f49eef93547aca9cf181c8a0591cad/src/main/java/org/apache/commons/io/input/ThrottledInputStream.java#L130 > https://github.com/apache/commons-io/blob/c155293776f49eef93547aca9cf181c8a0591cad/src/main/java/org/apache/commons/io/input/ThrottledInputStream.java#L150
It looks like some of these could be IllegalArgumentExceptions and some IllegalStateExceptions. Worth experimenting with the changes to see if anything breaks. Gary > > > Gary > > > > On Thu, Jul 25, 2024, 12:24 PM sebb <seb...@gmail.com> wrote: > > > > > I'm not convinced that it ever makes sense to use assert checks in our > > > code. > > > > > > In the case of test code, it seems to me that a JUnit assertion makes > > > more sense, as it is unconditionally checked. > > > > > > In main code, does it make sense to use a check that is not guaranteed to > > > run? > > > I would expect to see an IllegalStateException instead if the check fails. > > > > > > However, if an assert IS needed, in most cases it needs a message to > > > ensure any failures contain sufficient information to determine the > > > cause of the failure. > > > > > > For example: > > > > > > assert length >= 10; // bad: what is the value of length? > > > > > > assert length >= 10 : "Length: " + length; // good: show unexpected value > > > > > > assert isEmpty; // does not need a message > > > > > > Sebb > > > > > > --------------------------------------------------------------------- > > > To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org > > > For additional commands, e-mail: dev-h...@commons.apache.org > > > > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org > For additional commands, e-mail: dev-h...@commons.apache.org > --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org For additional commands, e-mail: dev-h...@commons.apache.org