If your method GetSomeFoos()actually "found" 0 elements, then it should return new Foo[0].
If any error occurs, you should throw it away Exception.
The reason is that users do not need to search for zeros:
for (Foo f: GetSomeFoos()) {
// do stuff
}
, GetSomeFoos null, NullPointerException. , , .