Форум программистов, компьютерный форум, киберфорум
PHP
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
16 / 4 / 4
Регистрация: 19.09.2012
Сообщений: 107
1

Exception в пространстве имен

06.02.2018, 02:50. Показов 596. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Взял такой пример с мануала
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
function inverse($x) {
    if (!$x) {
        throw new Exception('Деление на ноль.');
    }
    return 1/$x;
}
 
try {
    echo inverse(5) . "\n";
    echo inverse(0) . "\n";
} catch (Exception $e) {
    echo 'Выброшено исключение: ',  $e->getMessage(), "\n";
}
Если данный код вставить в файл index.php, без пространства имен, то все работает корректно.
Если код вставить в файл Basket.php, где первая строка
PHP
1
namespace Basket;
Уже перестает работать? как правильно использовать Exception в пространстве имен?
Выдает такую ошибку
Fatal error: Uncaught Error: Class 'Basket\Exception' not found in D:\xampp\htdocs\skep\Basket\Basket.class.php:30 Stack trace: #0 D:\xampp\htdocs\skep\Basket\Basket.class.php(37): Basket\inverse(0) #1 D:\xampp\htdocs\skep\index.php(43): require_once('D:\\xampp\\htdocs...') #2 [internal function]: myAutoload('Basket\\Basket') #3 D:\xampp\htdocs\skep\index.php(56): spl_autoload_call('Basket\\Basket') #4 {main} thrown in D:\xampp\htdocs\skep\Basket\Basket.class.php on line 30
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.02.2018, 02:50
Ответы с готовыми решениями:

Как вызвать функцию в пространстве имен?
Я создал несколько файлов. В каждом файле есть одно пространство имен. И несколько функций....

Имя типа или пространства имен отсутствует в пространстве имен
Подскажите решение проблемы. Целиком код:

Имя типа или пространства имен отсутствует в пространстве имён
Доброго времени суток. Делаю пример SportsStore из книги "ASP.NET MVC 3 Framework с примерами на...

Имя типа или пространства имен "ProtectedData" отсутствует в пространстве имен System.Security.Cryptography
Такая проблема, пытаюсь собрать проект , но дает ошибки : по идее, они должны идти в комплекте...

3
461 / 369 / 94
Регистрация: 01.05.2010
Сообщений: 1,761
06.02.2018, 09:27 2
PHP
1
throw new \Exception;
и
PHP
1
catch (\Exception $e)
Exception можно сказать находится в корне всех пространств имеет, и если вы используете пространства имен, то нужно их указывать даже для встроенных объектов.
1
Эксперт PHP
3851 / 3196 / 1343
Регистрация: 01.08.2012
Сообщений: 10,820
06.02.2018, 10:45 3
Exception - это название класса относительно текущего пространства имён. Если оно не указано, значит пространство имён корневое.
\Exception - это абсолютное название класса, вместе с пространством имён.

Т.е. когда вы пишете namespace Basket;, Exception превращается в \Basket\Exception.

Можно использовать абсолютное название класса (как показали выше), можно использовать оператор use:

PHP
1
2
3
4
5
namespace Basket;
 
use Exception;
 
throw new Exception('message');
1
16 / 4 / 4
Регистрация: 19.09.2012
Сообщений: 107
06.02.2018, 12:22  [ТС] 4
Зверушь
Jodah
Я вас понял, спасибо за ответ. Попробую вечером, как с работы прийду.
0
06.02.2018, 12:22
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.02.2018, 12:22
Помогаю со студенческими работами здесь

Имя типа или пространство имён sess отсутствуют в классе или в пространстве имён user
Привет Написана страничка User в ней: namespace user { public class user :System.tralala {...

Тип или имя пространства имен 'Windows' не существует в пространстве имен "Microsoft"
Здравствуйте! Такая проблема, не могу понять, почему проект не может обнаружить ссылку на сборку. ...

Имя типа или пространства имен "My" отсутствует в пространстве имен
private void Form1_Load(object sender, EventArgs e) { if...

Ошибка CS0234 Тип или имя пространства имен "Interpor" не существует в пространстве имен "Microsoft.Office"
Выбивает "Ошибка CS0234 Тип или имя пространства имен "Interpor" не существует в пространстве имен...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru