Take grep as an example.
If it doesn't find a match for the specified regex, it fails silently (and exits with a return value of 1).
If the file isn't found, then grep reports that error, e.g.,
$ grep foo /doesnotexist
grep: /doesnotexist: No such file or directory
Mind that it's quite possible that that error might result from an improperly quoted or escaped multi-term regex (containing whitespace), e.g.,
$ grep foo bar baz /etc/bashrc
grep: bar: No such file or directory
grep: baz: No such file or directory
In a well-designed bash script, you'd test the file and quote the regex, e.g.,
test -f somefile && grep 'foo bar baz' somefile
Grep is verbose on error
where that's useful, but not overly so.
A tool which returns a (brief) usage note is "magick" (from the ImageMagick suite):
$ magick --asdf
Error: Invalid argument or not enough arguments
Usage: magick tool [ {option} | {image} ... ] {output_image}
Usage: magick [ {option} | {image} ... ] {output_image}
magick [ {option} | {image} ... ] -script {filename} [ {script_args} ...]
magick -help | -version | -usage | -list {option}
There are others I've encountered which return a much longer help set. I believe opkg from OpenWRT is amongst those, which prints over 80 lines worth of options to stderr when given an invalid argument.