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