Здравствуйте! Изучаю php 4-й день по книге Дэвида Скляра. Дошел до классов и индикации ошибок и решил написать вот такой код:
$usersCount= 0;
class User{
public $name;
public $age;
public function __construct($name, $age){
if($age>=100){
throw new Exception('$age must be <100');
}
$this->age = $age;
$this->name = $name;
$GLOBALS[usersCount]+=1;
}
public function showAge(){
print "Возвраст пользователя $this->name - $this->age<br>";
}
public static function showUsersCount(){
print "Количество пользователей - $GLOBALS[usersCount]<br>";
}
}
try{
$bob = new User("Боб", 34);
$bob->showAge();
$jack = new User("Джек", 42);
$jack->showAge();
$maria = new User("Мария", 23);
$maria->showAge();
$mikle = new User("Майкл", 1312);
$mikle->showAge();
}catch(Exeption $e){
print "Error: " . $e->getMessage();
}
User::showUsersCount();
Если возвраст пользователся больше 100, то выбрасываем ошибку, которая будет прехвачена на уровне выше. Но почему-то ошибка прилетает сразу интрепретатору, а catch ничего не делает, хотя по плану, он должен выводить через print только сообщение об ошибке.
Вот, что выводится в браузере:
Возвраст пользователя Боб - 34
Возвраст пользователя Джек - 42
Возвраст пользователя Мария - 23
Fatal error: Uncaught Exception: $age must be <100 in C:\OpenServer\domains\asd\Untitled_1.php:45 Stack trace: #0 C:\OpenServer\domains\asd\Untitled_1.php(71): User->__construct('\xD0\x9C\xD0\xB0\xD0\xB9\xD0\xBA\xD0\xBB', 1312) #1 {main} thrown in C:\OpenServer\domains\asd\Untitled_1.php on line 45
А должно быть что-то вроде этого:
Возвраст пользователя Боб - 34
Возвраст пользователя Джек - 42
Возвраст пользователя Мария - 23
Error: $age must be <100