Какая часть создания исключения является дорогой?
В Java использование throw / catch как части логики, когда на самом деле ошибки нет, как правило, является плохой идеей (частично), потому что выбрасывать и перехватывать исключение дорого, и делать это много раз в цикле обычно гораздо медленнее, чем другие. управляющие структуры, которые не включают в себя исключения.
Мой вопрос заключается в том, являются ли затраты, понесенные в самом броске / захвате, или при создании объекта Exception (поскольку он получает много информации времени выполнения, включая стек выполнения)?
Другими словами, если я делаю
Exception e = new Exception();
но не бросайте его, это большая часть стоимости броска, или обработка броска + улова стоит дорого?
Я не спрашиваю, добавляет ли код в блок try / catch стоимость выполнения этого кода, я спрашиваю, является ли перехват Exception дорогой частью, или создает (вызывает конструктор) Exception - дорогую часть ,
Еще один способ задать вопрос: если я сделал один экземпляр Exception, а затем бросил и поймал его снова и снова, это было бы значительно быстрее, чем создание нового исключения каждый раз, когда я выбрасывал?