1) Recovering from Error is not possible. The only solution to errors is to terminate the execution. Where as you can recover from Exception by using either try-catch blocks or throwing exception back to caller.
2) You will not be able to handle the Errors using
try-catch blocks. Even if you handle them using try-catch blocks, your
application will not recover if they happen. On the other hand, Exceptions can be handled using try-catch blocks and can make program flow normal if they happen.
3) Exceptions in java are divided into two categories – checked and unchecked. Where as all Errors belongs to only one category i.e unchecked.
4) Compiler will not have any knowledge about unchecked exceptions which include Errors and sub classes of Run Time Exception because they happen at run time. Where as compiler will have knowledge about checked Exceptions. Compiler will force you to keep try-catch blocks if it sees any statements which may throw checked exceptions.
5) Exceptions are related to application where as Errors are related to environment in which application is running.