Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Problema ao criar uma Exception

Criei a classe como feito na aula de Exceptions


namespace Alura\Banco\Modelo\Conta;

class SaldoInsuficienteException extends \DomainException
{
    public function __construct(float $valorSaque, float $saldoAtual)
    {
        $mensagem = "Você tentou sacar $valorSaque, mas tem apenas $saldoAtual em conta.";
        parent::__construct($mensagem);
    }
}

Porem quando faço sua chamada na classe Conta ele fica grifado em vermelho com a mensagem: "Undefined Type"

<?php

namespace Alura\Banco\Modelo\Conta;

use SaldoInsuficienteException;

abstract class Conta
{
    private Titular $titular;
    private float $saldo;
    private static int $numeroDeContas = 0;


    public function __construct(Titular $titular)
    {
        $this->titular = $titular;
        $this->saldo = 0;

        //acesso ao atibuto static
        self::$numeroDeContas++;
    }

    public function __destruct()
    {
        self::$numeroDeContas--;
    }

    public function saca(float $valorASacar): void
    {   
        $tarifaSaque = $valorASacar * $this->percentualTarifa(); 
        $valorSaque = $valorASacar + $tarifaSaque;
        if ($valorSaque > $this->saldo) {
            throw new SaldoInsuficienteException($valorASacar, $this->saldo);
        }   



        $this->saldo -= $valorSaque;
    }

    public function deposita(float $valorADepositar): void
    {
        if ($valorADepositar < 0) {
            echo "Valor precisa ser positivo";
            return;
        }

        $this->saldo += $valorADepositar;
    }

    public function recuperaSaldo(): float
    {
        return $this->saldo;
    }

    public static function recuperaNumeroDeContas() : int
    {
        return self::$numeroDeContas;
    } 

    public function recuperaNomeTitular(): string
    {
    return $this->titular->recuperaNome();
    }

    public function recuperaCpfTitular(): string
    {
    return $this->titular->recuperaCpf();
    }

    abstract protected function percentualTarifa():float;
}

Quando o programa é executado apresenta o erro : "Uncaught Error: Class 'SaldoInsuficienteException' not found"

1 resposta
solução!

Você não fez o use do nome correto. Faltou o namespace. :-)