Exceptions should be thrown, as the name suggests, during exceptional cases. This exception is not needed - exceptions must be used only to break execution flow, usually under error conditions, until caught. If the next round is executed successfully as the game progresses, you can just return normally.

A winner exception is OK, as winning a game is unusual - when we call nextRound, we expect a new round to be created and the game to advance, but when a winner is detected, the game is over, which is an exceptional situation.

However, it is usually best to limit exceptions to erroneous conditions. I suggest that we change this function to return a value based on whether a winner exists or not.

The NextRoundException must definitely be avoided, however.