You can catch anything that is Throwable which means you can catch Error. But an Error represents a serious problem and not advisable to catch.
From
Java API:
"An Error is a subclass of Throwable that indicates serious problems that a reasonable application should not try to catch. Most such errors are abnormal conditions. The ThreadDeath error, though a "normal" condition, is also a subclass of Error because most applications should not try to catch it. "