1
1
<?xml version =" 1.0" encoding =" utf-8" ?>
2
- <!-- EN-Revision: 22583751fbfdaa3eaa41aeb6470d1343f5cb2c78 Maintainer: rjhdby Status: ready -->
2
+ <!-- EN-Revision: 2485376b5b3d6b40e5c0d4e198ab5ff2a142425c Maintainer: rjhdby Status: ready -->
3
3
<!-- Reviewed: no -->
4
4
<sect2 xml : id =" migration70.incompatible.error-handling" >
5
5
<title >Изменения в обработке ошибок и исключений</title >
6
6
7
7
<para >
8
- Многие фатальные и поправимые фатальные ошибки были
9
- переделаны в исключения в PHP 7 . Эти исключения наследуют
8
+ В PHP 7 многие фатальные и поправимые фатальные ошибки
9
+ переделали в исключения. Эти исключения наследуют
10
10
класс <classname >Error</classname >, который, в свою
11
11
очередь, реализует интерфейс
12
12
<classname >Throwable</classname >
13
- (новый базовый интерфейс, который наследуют все исключения).
13
+ (новый базовый интерфейс, который наследуют исключения).
14
14
</para >
15
15
16
16
<para >
17
- Это означает, пользовательские обработчики ошибок могут
18
- не быть вызваны, потому что вместо вызова ошибки, будет
19
- выброшено исключение (порождая новые фатальные ошибки
17
+ Поэтому пользовательские обработчики ошибок
18
+ не вызовутся, если вместо вызова ошибки
19
+ выбросится исключение (порождая новые фатальные ошибки
20
20
из-за неперехваченных исключений класса
21
21
<classname >Error</classname >).
22
22
</para >
23
23
24
24
<para >
25
- Более подробное описание того, как ошибки работают в PHP 7,
26
- можно найти на странице
25
+ Более подробное описание работы ошибок в PHP 7
26
+ даёт страница
27
27
<link linkend =" language.errors.php7" >ошибки PHP 7</link >.
28
- Это руководство всего лишь перечисляет изменения, которые
29
- могут привести к обратной несовместимости.
28
+ Это руководство только перечисляет изменения, которые
29
+ приводят к обратной несовместимости.
30
30
</para >
31
31
32
32
<sect3 xml : id =" migration70.incompatible.error-handling.set-exception-handler" >
33
33
<title >
34
- <function >set_exception_handler</function > больше не
35
- гарантирует получение объекта класса
34
+ Функция <function >set_exception_handler</function > больше
35
+ не гарантирует получение объекта класса
36
36
<classname >Exception</classname >
37
37
</title >
38
38
39
39
<para >
40
- Код, реализующий регистрацию обработчика исключений
41
- с помощью <function >set_exception_handler</function >,
42
- используя декларацию типа
43
- <classname >Exception</classname >, вызовет фатальную
44
- ошибку, если будет выброшено исключение
40
+ Код, который реализует регистрацию обработчика исключений
41
+ функцией <function >set_exception_handler</function >
42
+ через декларацию типа
43
+ <classname >Exception</classname > вызовет фатальную
44
+ ошибку, если выбросится исключение
45
45
<classname >Error</classname >.
46
46
</para >
47
47
48
48
<para >
49
- Если требуется работа обработчика в PHP 5 и 7, вы должны
50
- убрать объявление класса из обработчика. Если код
51
- предполагается использовать только в PHP 7, то можно
52
- просто поменять тип с <classname >Exception </classname > на
53
- < classname >Throwable</ classname > .
49
+ Потребуется убрать объявление класса из обработчика,
50
+ если требуется работа обработчика в PHP 5 и 7. Достаточно
51
+ изменить тип < classname >Exception</ classname > на тип
52
+ <classname >Throwable </classname >, если код
53
+ планируется использовать только в PHP 7 .
54
54
</para >
55
55
56
56
<informalexample >
57
57
<programlisting role =" php" >
58
58
<![CDATA[
59
59
<?php
60
- // Только PHP 5. В PHP 7 может вызвать фатальную ошибку.
60
+
61
+ // Только PHP 5. В PHP 7 при исключении другого типа вызывает фатальную ошибку
61
62
function handler(Exception $e) { /* ... */ }
62
63
set_exception_handler('handler');
63
64
64
- // Будет работать PHP 5 и 7.
65
- function handler($e) { ... }
65
+ // Будет работать PHP 5 и 7
66
+ function handler($e) { /* ... */ }
66
67
67
- // Только PHP 7.
68
+ // Только PHP 7
68
69
function handler(Throwable $e) { /* ... */ }
70
+
69
71
?>
70
72
]]>
71
73
</programlisting >
72
74
</informalexample >
73
75
</sect3 >
74
76
75
77
<sect3 xml : id =" migration70.incompatible.error-handling.constructors" >
76
- <title >Встроенные конструкторы всегда вызывают исключения в случае неудачи </title >
78
+ <title >Встроенные конструкторы вызывают исключения при ошибке </title >
77
79
78
80
<para >
79
- Ранее некоторые внутренние классы возвращали
80
- &null; или бесполезный объект, когда конструктор терпел неудачу. Все
81
- встроенные классы теперь в таком случае будут выбрасывать
82
- исключение <classname >Exception</classname >, ровно
83
- как это уже делают пользовательские классы.
81
+ Раньше отдельные внутренние классы возвращали
82
+ &null; или бесполезный объект, когда конструктор терпел неудачу.
83
+ Теперь встроенные классы в таких случаях выбрасывают
84
+ исключение <classname >Exception</classname >,
85
+ так же, как это уже делают пользовательские классы.
84
86
</para >
85
87
</sect3 >
86
88
@@ -98,11 +100,11 @@ function handler(Throwable $e) { /* ... */ }
98
100
<title >Изменение строгости уведомлений E_STRICT</title >
99
101
100
102
<para >
101
- Все сообщения <constant >E_STRICT</constant >
102
- переквалифицированы по другим уровням.
103
- Константа <constant >E_STRICT</constant > сохранена, так что
104
- <literal >error_reporting(E_ALL|E_STRICT)</literal > не вызовет
105
- ошибки .
103
+ Сообщения уровня <constant >E_STRICT</constant >
104
+ переквалифицировали по другим уровням.
105
+ Константу <constant >E_STRICT</constant > сохранили, поэтому
106
+ установка <literal >error_reporting(E_ALL|E_STRICT)</literal > не вызовет
107
+ ошибок .
106
108
</para >
107
109
<para >
108
110
<table >
@@ -111,40 +113,40 @@ function handler(Throwable $e) { /* ... */ }
111
113
<thead >
112
114
<row >
113
115
<entry >Ситуация</entry >
114
- <entry >Новый уровень/ поведение</entry >
116
+ <entry >Новый уровень или поведение</entry >
115
117
</row >
116
118
</thead >
117
119
<tbody >
118
120
<row >
119
- <entry >Индексирование ресурсом </entry >
121
+ <entry >Установка ресурса как индекса </entry >
120
122
<entry ><constant >E_NOTICE</constant ></entry >
121
123
</row >
122
124
<row >
123
125
<entry >Абстрактные статические методы</entry >
124
- <entry >Сообщение убрано, не вызывает ошибки </entry >
126
+ <entry >Сообщение убрали, ошибка не возникает </entry >
125
127
</row >
126
128
<row >
127
- <entry >" Переопределение" конструктора</entry >
128
- <entry >Сообщение убрано, не вызывает ошибки </entry >
129
+ <entry >« Переопределение» конструктора</entry >
130
+ <entry >Сообщение убрали, ошибка не возникает </entry >
129
131
</row >
130
132
<row >
131
133
<entry >Несоблюдение сигнатуры при наследовании</entry >
132
134
<entry ><constant >E_WARNING</constant ></entry >
133
135
</row >
134
136
<row >
135
137
<entry >Одинаковые (совместимые) свойства в двух разных трейтах</entry >
136
- <entry >Сообщение убрано, не вызывает ошибки </entry >
138
+ <entry >Сообщение убрали, ошибка не возникает </entry >
137
139
</row >
138
140
<row >
139
141
<entry >Нестатический доступ к статическому свойству</entry >
140
142
<entry ><constant >E_NOTICE</constant ></entry >
141
143
</row >
142
144
<row >
143
- <entry >Только переменные могут быть присвоены по ссылке</entry >
145
+ <entry >Только переменные присваиваются по ссылке</entry >
144
146
<entry ><constant >E_NOTICE</constant ></entry >
145
147
</row >
146
148
<row >
147
- <entry >Только переменные могут быть переданы по ссылке</entry >
149
+ <entry >Только переменные передаются по ссылке</entry >
148
150
<entry ><constant >E_NOTICE</constant ></entry >
149
151
</row >
150
152
<row >
0 commit comments