> :- won't throw an error if $4 is undefined.

I've never heard of Bash "throwing an error" and the docs you mention don't say anything about that either. They only say:

> Put another way, if the colon is included, the operator tests for both parameter’s existence and that its value is not null; if the colon is omitted, the operator tests only for existence.