ServletException is a general exception that the
servlet container will catch and log. The cause can be anything you define. The exception may contain a root cause exception.
UnavailableException is derived from ServletException and has the specific meaning that the servlet is not presently available. This may be temporary or permanent. The servlet container should send a 503 error code as a response. Your servlet might throw a UnavailableException if a database was temporarily off-line.
Bill