Вместо создания своего исключения можно было обойтись уже готовым:

    throw new IllegalArgumentException("Bad bracket balance");