Разница между throw и throw new Exception заключается в том, что throw сохраняет исходную трассировку стека, предоставляя полную информацию о том, где возникло исключение. 13 Throw new Exception, в свою очередь, создаёт новое исключение с настраиваемым сообщением, при этом исходное исключение передаётся как внутреннее. 1 Это позволяет добавить контекст к исключению, сохраняя исходные детали. 1
Таким образом, throw используется, когда нужно сохранить исходный контекст исключения и трассировку стека, а throw new Exception — когда нужно добавить больше контекста к исключению, сохраняя исходные детали. 1
Выбор между этими операторами зависит от конкретных задач разработки.