Я предполагаю, что под «идентичным» вы имеете в виду поведение.
Поведение функции можно определить по:
1) Возвращаемое значение
2) Выброшенные исключения
3) Побочные эффекты (например, изменения в куче, файловой системе и т. Д.)
В этом случае первый метод распространяет любое исключение, в то время как второй не генерирует проверенное исключение, а также проглатывает большинство непроверенных исключений, поэтому поведение ИНАЧЕ.
Однако, если вы гарантируете, что «сделать что-то» никогда не вызовет исключения, то поведение будет идентичным (хотя в первой версии компилятор потребует, чтобы вызывающий обработал исключение)
--редактировать--
С точки зрения дизайна API, методы совершенно разные по своему контракту. Также не рекомендуется выбрасывать исключение класса. Попробуйте создать что-то более конкретное, чтобы вызывающий абонент мог лучше обработать исключение.