So that in catch block you can be sure to get some details on exception like getCause()
, getMessage()
, getStackTrace()
. If its generic Object
, you wont have access to these methods without explicit casting, and you wont be still sure that these method actually exist. As its instance of Throwable, you are sure that you can retrieve these details from exception (the object in the catch).