How to use PHP LogicException?

Posted on

Question :

I’m studying error handling in PHP, and I already know how to use Exception , but I was in doubt about LogicException , what is the purpose of it? And how to use it correctly?


Answer :

LogicException according to the PHP documentation, it is an exception type related to some error of logic in your application, which will involve a change in your code.

In other words, it would be the errors where “Huuum … this should not have happened.”


I could not think of a more elaborate real situation, but in this case the implementation is working


Class Divisao
    private $divisor;
    private $dividendo;

    public function __construct($dividendo, $divisor){
        $this->dividendo = (int) $dividendo;
        $this->divisor = (int) $divisor;        

    private function valida(){
        // @todo Verifica se o Divisor é Igual a 0
        return true;

    public function dividir(){
        if ($this->valida()){

            // Se mesmo depois da validação o divisor for Zero, temos um erro de lógica.
            if ($this->divisor === 0) throw new LogicException('Validação Falhou');

            return $this->dividendo / $this->divisor;
try {
    $d1 = new Divisao(2,2);
    $d2 = new Divisao(2,0);

    echo $d1->dividir();
    echo $d2->dividir();

} catch (LogicException $e) {
    echo "Erro de Lógica " . $e->getMessage();


The exception LogicException is thrown when the code has some logic error.

/ p>


Exception representing error in program logic. This kind of
  exception should lead directly to a fix in your code.

Using LogicException is similar to DomainException , it should be used if your code produces a value it should not produce.


The exception DomainException is thrown when a value does not adhere to
  a valid data domain defined.


function diaUtil($dia){
    switch ($dia){
        case 2:  echo "Segunda-feira"; break;
        case 3:  echo "Terça-feira";   break;
        case 4:  echo "Quarta-feira";  break;
        case 5:  echo "Quinta-feira";  break;
        case 6:  echo "Sexta-Feira";   break;
                 throw new DomainException("Não é um dia útil válido");

diaUtil(3);  // Terça-feira
diaUtil(10); // Não é um dia útil válido



  • LogicException (extension of Exception )
  • RuntimeException (extension of Exception )

  • Leave a Reply

    Your email address will not be published. Required fields are marked *