java – É correto programarmos retornando exceções ao acontecer algo esperado?

Quando estamos desenvolvendo um software podemos passar por situações onde acontece algo que não estamos esperando e geralmente quando acontece em muitas linguagens de programação podemos tratar isso dentro de exceções os famosos blocos de codigo try/catch

Mas recentemente me surgiu uma duvida! digamos que temos uma classe Conta.

class ContaCorrente extends Conta {

    public void deposita(double valor) {
        super.saldo += (valor);
    }

    public void saca(double valor) {
        if (super.saldo < valor) {
            throw new SaldoInsuficienteException(
                    "O saldo não é suficiente para saque, Saldo atual é: " + super.saldo + " Você tentou sacar " + valor);
        }
        super.saldo += (valor - 0.10);
    }

}

E nesse caso eu criei uma exceção unchecked do java:

public class SaldoInsuficienteException extends RuntimeException{
    
    public SaldoInsuficienteException(String msg) {
        super(msg);
    }

}

Para testar criei um simples main

public static void main(String() args) {
        Conta conta = new ContaCorrente();
        conta.deposita(200);
        
        try {
            conta.saca(300);
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }

O que retornar? é a gosto do freguês ou tem uma melhor forma?