How do I tell if an object is callable (a function-like object)?

If the reason you are avoiding catching MethodError is for speed, you could see this thread:: Performance of hasmethod vs try-catch on MethodError.

The solution is overkill (works by caching the MethodErrors) but it works, is type stable, and only faces a ~10 ns overhead.