Dúvidas com try e catch

Não consigo compreender esse erro, alguém pode me ajudar?

Minha classe main

package testeconta;

import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;

public class TesteConta {

public static void main(String[] args) {
    
    Conta conta = new Conta(5);
    
    try{
        conta.debitar(2);
    } catch (SaldoInsuficienteException e) {
        JOptionPane.showMessageDialog(null, "Erro ao debitar");
        e.printStackTrace();
    }
    
}//Fim do Main

}

PRINT DO ERRO

CLASSE CONTA

package testeconta;

import javax.swing.JOptionPane;

public class Conta {

public float saldo ;


public Conta(float saldo){
    this.saldo = saldo;
}

public float debitar(float valor) throws SaldoInsuficienteException{
      
    //try {
        if(saldo<0 || valor>saldo){
            throw new SaldoInsuficienteException();
        //JOptionPane.showMessageDialog(null, "Debitado com sucesso! ");
        //}
        
    }// catch (Exception ex) {
        return this.debitar(valor);
        //JOptionPane.showMessageDialog(null, "Erro ao debitar:\n "+ex.getMessage());
    //}
   // return 0;
    
    
}

}//Fim da classe

CLASSE SaldoInsuficienteException

package testeconta;

public class SaldoInsuficienteException extends Exception{
//Aqui será o tratamento

public SaldoInsuficienteException(){
    System.out.println("Saldo Insuficiente! ");
}

}

a sua ideia é recursão? pq se for isso, o q vc fez não vai dar certo

public class Conta {

    private float saldo;

    public Conta(float saldo) {
        this.saldo = saldo;
    }

    public void debitar(float valor) throws SaldoInsuficienteException {
        if (saldo < 0 || valor > saldo) {
            throw new SaldoInsuficienteException("Saldo Insuficiente");
        }

        this.saldo -= valor;
    }

    public float getSaldo() {
        return saldo;
    }