The crm_get_note() API returns an error object if there are no notes. This is annoying, since (1) not having a note for an object is not an error: it's the normal situation, and (2) because it is, it prevents me from detecting real errors, like the use of a bad contact_id.
(of course, if I could easily tell that error was "no such object", I could do this. But your error reporting system doesn't readily allow this).
The API should really return an empty array in this case.