Исключение не попадает в улов

php

30 просмотра

1 ответ

В настоящее время у меня есть класс, который содержит этот метод:

public function getUser(
) {
    if (!empty($this->UserName)){
        return $this->UserName;
    } else {
        throw new Exception('Empty UserName');
    }
}

Когда я затем запускаю этот метод, когда имя пользователя НЕ установлено, перехват не выдает выброшенное исключение, страница просто молча умирает.

try {
    $example = $obj->getUser();
} catch (Exception $ex) {
    die($ex->getMessage());
}

Предложения? - Я прочитал документацию и ничего не нашел.

Автор: Jaquarh Источник Размещён: 08.11.2019 11:27

Ответы (1)


1 плюс

Решение

Кажется, это работает, мне пришлось воссоздать то, что, как я предполагал, будет вашим классом

<?php

class User {
    public $UserName = '';

    public function getUser() {
        if (empty($this->UserName))
            throw new Exception('UserName is empty!');

        return $this->UserName;
    }
}

try {
    $user = (new User())->getUser();
} catch (Exception $e) {
    echo $e->getMessage();
}

?>

Выход

Я могу только предположить, что ваша переменная на самом деле не пуста.

уведомление

В PHP строка с пробелом НЕ классифицируется как пустая,

var_dump(empty(' ')); // false

Если только вы trim,

var_dump(empty(trim(' '))); // true

Отчет об ошибках

Если это еще не сделано, включите error_reporting,

ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
Автор: Script47 Размещён: 20.08.2016 03:00
Вопросы из категории :
32x32