Supongo que por "idéntico" se refiere al comportamiento.
Un comportamiento de una función se puede determinar por:
1) Valor devuelto
2) excepciones lanzadas
3) efectos secundarios (i.e cambios en el montón, sistema de archivos, etc.)
En este caso, el primer método propaga cualquier excepción, mientras que el segundo arroja ninguna excepción marcada, y se traga también la mayoría de las excepciones no verificadas, por lo que el comportamiento ES diferente.
Sin embargo, si usted garantiza que "hacer algo" nunca se produce una excepción, entonces el comportamiento sería idéntico (aunque el compilador requerirá la persona que llama para manejar la excepción, en la primera versión)
--edit -
Desde el punto de vista del diseño de la API, los métodos son completamente diferentes en su contrato. Además, throwing class Exception no es recomendable. Intente arrojar algo más específico para permitir que la persona que llama maneje mejor la excepción.
realmente una respuesta, pero que podría estar interesado en el artículo [Excepciones de Ned Batchelder en la selva] (http://nedbatchelder.com/text/exceptions-in-the-rainforest.html), que ayuda a explicar los casos generales en los que se prefiere un estilo u otro. –
en lugar de tener "showException (e)" en la captura, ¿preguntaba si tenía "throws e" en la captura en su lugar (o no tiene el try/catch en absoluto)? – MacGyver