Because the output from Facebook is either a JSON-formatted string (on error) or a non-JSON string of qs-style parameters (on success). The try-catch is an attempt to deal with Facebook's fucked-up interface...basically if it's not JSON formatted then it was a successful call.

Obv Facebook should return a JSON formatted object no matter what the context, but that would make too much sense.