The java.lang.Throwable class has two subclasses Error and Exception. There are two types of exceptions non runtime exceptions and runtime exceptions. Non runtime exceptions are called checked exceptions and the unchecked exceptions are runtime exceptions.
Runtime Exceptions occur when the code is not robust and non runtime exceptions occur due to the problems is environment, settings, etc.