Canonical example:
while foo.hasBar() && foo.getBar() != spam
{
do lots of stuff
}
foo.getBar() will raise an exception if it has no bar. However, it is guaranteed that this expression will not be evaluated unless foo has a bar. Is that considered a good programming style?