- Notifications
You must be signed in to change notification settings - Fork 80
/
Copy patherrors.po
447 lines (395 loc) · 23 KB
/
errors.po
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
# SOME DESCRIPTIVE TITLE.
# Copyright (C) 2001-2024, Python Software Foundation
# This file is distributed under the same license as the Python package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
# Translators:
# Freesand Leo <yuqinju@163.com>, 2024
# ww song <sww4718168@gmail.com>, 2024
# jaystone776 <1732865113@qq.com>, 2024
# Larry Wang <larry.wang.801@gmail.com>, 2024
# df2dc1c92e792f7ae8417c51df43db8f_594d92a <0f49be28017426edb1db1a2ab6e67088_717605>, 2024
# Rafael Fontenelle <rffontenelle@gmail.com>, 2024
#
#,fuzzy
msgid ""
msgstr ""
"Project-Id-Version: Python 3.8\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-06-14 20:46+0000\n"
"PO-Revision-Date: 2020-05-30 12:16+0000\n"
"Last-Translator: Rafael Fontenelle <rffontenelle@gmail.com>, 2024\n"
"Language-Team: Chinese (China) (https://app.transifex.com/python-doc/teams/5390/zh_CN/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: zh_CN\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#:../../tutorial/errors.rst:5
msgid"Errors and Exceptions"
msgstr"错误和异常"
#:../../tutorial/errors.rst:7
msgid""
"Until now error messages haven't been more than mentioned, but if you have "
"tried out the examples you have probably seen some. There are (at least) "
"two distinguishable kinds of errors: *syntax errors* and *exceptions*."
msgstr""
"至此,本教程还未深入介绍错误信息,但如果您尝试过本教程前文中的例子,应该已经看到过一些错误信息。错误可(至少)被分为两种:*语法错误* 和 *异常*。"
#:../../tutorial/errors.rst:15
msgid"Syntax Errors"
msgstr"语法错误"
#:../../tutorial/errors.rst:17
msgid""
"Syntax errors, also known as parsing errors, are perhaps the most common "
"kind of complaint you get while you are still learning Python::"
msgstr"语法错误又称解析错误,是学习 Python 时最常见的错误:"
#:../../tutorial/errors.rst:26
msgid""
"The parser repeats the offending line and displays a little 'arrow' pointing"
" at the earliest point in the line where the error was detected. The error "
"is caused by (or at least detected at) the token *preceding* the arrow: in "
"the example, the error is detected at the function :func:`print`, since a "
"colon (``':'``) is missing before it. File name and line number are printed"
" so you know where to look in case the input came from a script."
msgstr""
"解析器会复现出现句法错误的代码行,并用小“箭头”指向行里检测到的第一个错误。错误是由箭头 *上方* 的 token "
"触发的(至少是在这里检测出的):本例中,在 :func:`print` 函数中检测到错误,因为,在它前面缺少冒号(``':'``) "
"。错误信息还输出文件名与行号,在使用脚本文件时,就可以知道去哪里查错。"
#:../../tutorial/errors.rst:37
msgid"Exceptions"
msgstr"异常"
#:../../tutorial/errors.rst:39
msgid""
"Even if a statement or expression is syntactically correct, it may cause an "
"error when an attempt is made to execute it. Errors detected during "
"execution are called *exceptions* and are not unconditionally fatal: you "
"will soon learn how to handle them in Python programs. Most exceptions are "
"not handled by programs, however, and result in error messages as shown "
"here::"
msgstr""
"即使语句或表达式使用了正确的语法,执行时仍可能触发错误。执行时检测到的错误称为 *异常*,异常不一定导致严重的后果:很快我们就能学会如何处理 "
"Python 的异常。大多数异常不会被程序处理,而是显示下列错误信息:"
#:../../tutorial/errors.rst:58
msgid""
"The last line of the error message indicates what happened. Exceptions come "
"in different types, and the type is printed as part of the message: the "
"types in the example are :exc:`ZeroDivisionError`, :exc:`NameError` and "
":exc:`TypeError`. The string printed as the exception type is the name of "
"the built-in exception that occurred. This is true for all built-in "
"exceptions, but need not be true for user-defined exceptions (although it is"
" a useful convention). Standard exception names are built-in identifiers "
"(not reserved keywords)."
msgstr""
"错误信息的最后一行说明程序遇到了什么类型的错误。异常有不同的类型,而类型名称会作为错误信息的一部分中打印出来:上述示例中的异常类型依次是::exc:`ZeroDivisionError`,"
" :exc:`NameError` 和 "
":exc:`TypeError`。作为异常类型打印的字符串是发生的内置异常的名称。对于所有内置异常都是如此,但对于用户定义的异常则不一定如此(虽然这种规范很有用)。标准的异常类型是内置的标识符(不是保留关键字)。"
#:../../tutorial/errors.rst:66
msgid""
"The rest of the line provides detail based on the type of exception and what"
" caused it."
msgstr"此行其余部分根据异常类型,结合出错原因,说明错误细节。"
#:../../tutorial/errors.rst:69
msgid""
"The preceding part of the error message shows the context where the "
"exception happened, in the form of a stack traceback. In general it contains"
" a stack traceback listing source lines; however, it will not display lines "
"read from standard input."
msgstr"错误信息的前一部分以堆栈回溯的形式显示发生异常时的上下文。通常它包含列出源代码行的堆栈回溯;但是它不会显示从标准输入中读取的行。"
#:../../tutorial/errors.rst:74
msgid""
":ref:`bltin-exceptions` lists the built-in exceptions and their meanings."
msgstr":ref:`bltin-exceptions` 列出了内置异常及其含义。"
#:../../tutorial/errors.rst:80
msgid"Handling Exceptions"
msgstr"异常的处理"
#:../../tutorial/errors.rst:82
msgid""
"It is possible to write programs that handle selected exceptions. Look at "
"the following example, which asks the user for input until a valid integer "
"has been entered, but allows the user to interrupt the program (using "
":kbd:`Control-C` or whatever the operating system supports); note that a "
"user-generated interruption is signalled by raising the "
":exc:`KeyboardInterrupt` exception. ::"
msgstr""
"可以编写程序处理选定的异常。下例会要求用户一直输入内容,直到输入有效的整数,但允许用户中断程序(使用 :kbd:`Control-C` "
"或操作系统支持的其他操作);注意,用户中断程序会触发 :exc:`KeyboardInterrupt` 异常。"
#:../../tutorial/errors.rst:96
msgid"The :keyword:`try` statement works as follows."
msgstr":keyword:`try` 语句的工作原理如下:"
#:../../tutorial/errors.rst:98
msgid""
"First, the *try clause* (the statement(s) between the :keyword:`try` and "
":keyword:`except` keywords) is executed."
msgstr"首先,执行 *try 子句* (:keyword:`try` 和 :keyword:`except` 关键字之间的(多行)语句)。"
#:../../tutorial/errors.rst:101
msgid""
"If no exception occurs, the *except clause* is skipped and execution of the "
":keyword:`try` statement is finished."
msgstr"如果没有触发异常,则跳过 *except 子句*,:keyword:`try` 语句执行完毕。"
#:../../tutorial/errors.rst:104
msgid""
"If an exception occurs during execution of the try clause, the rest of the "
"clause is skipped. Then if its type matches the exception named after the "
":keyword:`except` keyword, the except clause is executed, and then execution"
" continues after the :keyword:`try` statement."
msgstr""
"如果执行 try 子句时发生了异常,则跳过该子句中剩下的部分。如果异常的类型与 :keyword:`except` 关键字后面的异常匹配,则执行 "
"except 子句,然后,继续执行 :keyword:`try` 语句之后的代码。"
#:../../tutorial/errors.rst:109
msgid""
"If an exception occurs which does not match the exception named in the "
"except clause, it is passed on to outer :keyword:`try` statements; if no "
"handler is found, it is an *unhandled exception* and execution stops with a "
"message as shown above."
msgstr""
"如果发生的异常不是 except 子句中列示的异常,则将其传递到外部的 :keyword:`try` 语句中;如果没有找到处理程序,则它是一个 "
"*未处理异常*,语句执行将终止,并显示如上所示的消息。"
#:../../tutorial/errors.rst:114
msgid""
"A :keyword:`try` statement may have more than one except clause, to specify "
"handlers for different exceptions. At most one handler will be executed. "
"Handlers only handle exceptions that occur in the corresponding try clause, "
"not in other handlers of the same :keyword:`!try` statement. An except "
"clause may name multiple exceptions as a parenthesized tuple, for example::"
msgstr""
":keyword:`try` 语句可以有多个 except 子句,可为不同异常指定相应的处理程序。但最多只会执行一个处理程序。处理程序只处理对应的 "
"try 子句中发生的异常,而不处理同一 :keyword:`!try` 语句内其他处理程序中的异常。except 子句可以用元组命名多个异常,例如:"
#:../../tutorial/errors.rst:123
msgid""
"A class in an :keyword:`except` clause is compatible with an exception if it"
" is the same class or a base class thereof (but not the other way around ---"
" an except clause listing a derived class is not compatible with a base "
"class). For example, the following code will print B, C, D in that order::"
msgstr""
"发生的异常与 :keyword:`except` 子句中的类是同一个类或是它的基类时,异常与 except 子句中的类兼容(反之则不成立 --- "
"列出派生类的 except 子句与基类不兼容)。例如,下面的代码依次输出 B, C, D:"
#:../../tutorial/errors.rst:147
msgid""
"Note that if the except clauses were reversed (with ``except B`` first), it "
"would have printed B, B, B --- the first matching except clause is "
"triggered."
msgstr""
"注意,如果颠倒 except 子句的顺序(把 ``except B`` 放到第一个),则输出 B,B,B --- 即触发第一个匹配的 except "
"子句。"
#:../../tutorial/errors.rst:150
msgid""
"The last except clause may omit the exception name(s), to serve as a "
"wildcard. Use this with extreme caution, since it is easy to mask a real "
"programming error in this way! It can also be used to print an error "
"message and then re-raise the exception (allowing a caller to handle the "
"exception as well)::"
msgstr""
"最后的 except "
"子句可以省略异常名,以用作通配符。但应谨慎使用,这种方式很容易掩盖真正的编程错误!它还可用于输出错误消息,然后重新触发异常(同样允许调用者处理异常):"
#:../../tutorial/errors.rst:169
msgid""
"The :keyword:`try` ... :keyword:`except` statement has an optional *else "
"clause*, which, when present, must follow all except clauses. It is useful "
"for code that must be executed if the try clause does not raise an "
"exception. For example::"
msgstr""
":keyword:`try` ... :keyword:`except` 语句支持可选的 *else 子句*,该子句必须放在所有 except "
"子句之后。如果 try 子句没有触发异常,但又必须执行一些代码时,这个子句很有用。例如:"
#:../../tutorial/errors.rst:183
msgid""
"The use of the :keyword:`!else` clause is better than adding additional code"
" to the :keyword:`try` clause because it avoids accidentally catching an "
"exception that wasn't raised by the code being protected by the "
":keyword:`!try` ... :keyword:`!except` statement."
msgstr""
"使用 :keyword:`!else` 子句比向 :keyword:`try` 子句添加额外的代码要好,可以避免意外捕获非 "
":keyword:`!try` ... :keyword:`!except` 语句保护的代码触发的异常。"
#:../../tutorial/errors.rst:188
msgid""
"When an exception occurs, it may have an associated value, also known as the"
" exception's *argument*. The presence and type of the argument depend on the"
" exception type."
msgstr"发生异常时,它可能具有关联值,即异常 *参数* 。是否需要参数,以及参数的类型取决于异常的类型。"
#:../../tutorial/errors.rst:192
msgid""
"The except clause may specify a variable after the exception name. The "
"variable is bound to an exception instance with the arguments stored in "
"``instance.args``. For convenience, the exception instance defines "
":meth:`__str__` so the arguments can be printed directly without having to "
"reference ``.args``. One may also instantiate an exception first before "
"raising it and add any attributes to it as desired. ::"
msgstr""
"except 子句可以在异常名称后面指定一个变量。这个变量和一个异常实例绑定,它的参数存储在 ``instance.args`` "
"中。为了方便起见,异常实例定义了 :meth:`__str__` ,因此可以直接打印参数而无需引用 ``.args`` "
"。也可以在抛出之前首先实例化异常,并根据需要向其添加任何属性。::"
#:../../tutorial/errors.rst:216
msgid""
"If an exception has arguments, they are printed as the last part ('detail') "
"of the message for unhandled exceptions."
msgstr"如果异常有参数,则它们将作为未处理异常的消息的最后一部分('详细信息')打印。"
#:../../tutorial/errors.rst:219
msgid""
"Exception handlers don't just handle exceptions if they occur immediately in"
" the try clause, but also if they occur inside functions that are called "
"(even indirectly) in the try clause. For example::"
msgstr"异常处理程序不仅处理 try 子句中遇到的异常,还处理 try 子句中调用(即使是间接地)的函数内部发生的异常。例如::"
#:../../tutorial/errors.rst:237
msgid"Raising Exceptions"
msgstr"触发异常"
#:../../tutorial/errors.rst:239
msgid""
"The :keyword:`raise` statement allows the programmer to force a specified "
"exception to occur. For example::"
msgstr":keyword:`raise` 语句支持强制触发指定的异常。例如:"
#:../../tutorial/errors.rst:247
msgid""
"The sole argument to :keyword:`raise` indicates the exception to be raised. "
"This must be either an exception instance or an exception class (a class "
"that derives from :class:`Exception`). If an exception class is passed, it "
"will be implicitly instantiated by calling its constructor with no "
"arguments::"
msgstr""
":keyword:`raise` 唯一的参数就是要触发的异常。这个参数必须是异常实例或异常类(派生自 :class:`Exception` "
"类)。如果传递的是异常类,将通过调用没有参数的构造函数来隐式实例化:"
#:../../tutorial/errors.rst:254
msgid""
"If you need to determine whether an exception was raised but don't intend to"
" handle it, a simpler form of the :keyword:`raise` statement allows you to "
"re-raise the exception::"
msgstr"如果只想判断是否触发了异常,但并不打算处理该异常,则可以使用更简单的 :keyword:`raise` 语句重新触发异常:"
#:../../tutorial/errors.rst:273
msgid"User-defined Exceptions"
msgstr"用户自定义异常"
#:../../tutorial/errors.rst:275
msgid""
"Programs may name their own exceptions by creating a new exception class "
"(see :ref:`tut-classes` for more about Python classes). Exceptions should "
"typically be derived from the :exc:`Exception` class, either directly or "
"indirectly."
msgstr""
"程序可以通过创建新的异常类命名自己的异常(Python 类的内容详见 :ref:`tut-classes`)。不论是以直接还是间接的方式,异常都应从 "
":exc:`Exception` 类派生。"
#:../../tutorial/errors.rst:279
msgid""
"Exception classes can be defined which do anything any other class can do, "
"but are usually kept simple, often only offering a number of attributes that"
" allow information about the error to be extracted by handlers for the "
"exception. When creating a module that can raise several distinct errors, a"
" common practice is to create a base class for exceptions defined by that "
"module, and subclass that to create specific exception classes for different"
" error conditions::"
msgstr""
"异常类和其他类一样,可以执行任何操作。但通常会比较简单,只提供让处理异常的程序提取错误信息的一些属性。创建能触发多个不同错误的模块时,一般只为该模块定义异常基类,然后再根据不同的错误条件,创建指定异常类的子类:"
#:../../tutorial/errors.rst:317
msgid""
"Most exceptions are defined with names that end in \"Error\", similar to the"
" naming of the standard exceptions."
msgstr"大多数异常命名都以 “Error” 结尾,类似标准异常的命名。"
#:../../tutorial/errors.rst:320
msgid""
"Many standard modules define their own exceptions to report errors that may "
"occur in functions they define. More information on classes is presented in"
" chapter :ref:`tut-classes`."
msgstr"许多标准模块都需要自定义异常,以报告由其定义的函数中出现的错误。有关类的说明,详见 :ref:`tut-classes`。"
#:../../tutorial/errors.rst:328
msgid"Defining Clean-up Actions"
msgstr"定义清理操作"
#:../../tutorial/errors.rst:330
msgid""
"The :keyword:`try` statement has another optional clause which is intended "
"to define clean-up actions that must be executed under all circumstances. "
"For example::"
msgstr":keyword:`try` 语句还有一个可选子句,用于定义在所有情况下都必须要执行的清理操作。例如:"
#:../../tutorial/errors.rst:344
msgid""
"If a :keyword:`finally` clause is present, the :keyword:`!finally` clause "
"will execute as the last task before the :keyword:`try` statement completes."
" The :keyword:`!finally` clause runs whether or not the :keyword:`!try` "
"statement produces an exception. The following points discuss more complex "
"cases when an exception occurs:"
msgstr""
"如果存在 :keyword:`finally` 子句,则 :keyword:`!finally` 子句是 :keyword:`try` "
"语句结束前执行的最后一项任务。不论 :keyword:`!try` 语句是否触发异常,都会执行 :keyword:`!finally` "
"子句。以下内容介绍了几种比较复杂的触发异常情景:"
#:../../tutorial/errors.rst:350
msgid""
"If an exception occurs during execution of the :keyword:`!try` clause, the "
"exception may be handled by an :keyword:`except` clause. If the exception is"
" not handled by an :keyword:`!except` clause, the exception is re-raised "
"after the :keyword:`!finally` clause has been executed."
msgstr""
"如果执行 :keyword:`!try` 子句期间触发了某个异常,则某个 :keyword:`except` 子句应处理该异常。如果该异常没有 "
":keyword:`!except` 子句处理,在 :keyword:`!finally` 子句执行后会被重新触发。"
#:../../tutorial/errors.rst:356
msgid""
"An exception could occur during execution of an :keyword:`!except` or "
":keyword:`!else` clause. Again, the exception is re-raised after the "
":keyword:`!finally` clause has been executed."
msgstr""
":keyword:`!except` 或 :keyword:`!else` 子句执行期间也会触发异常。 同样,该异常会在 "
":keyword:`!finally` 子句执行之后被重新触发。"
#:../../tutorial/errors.rst:360
msgid""
"If the :keyword:`!try` statement reaches a :keyword:`break`, "
":keyword:`continue` or :keyword:`return` statement, the :keyword:`!finally` "
"clause will execute just prior to the :keyword:`!break`, "
":keyword:`!continue` or :keyword:`!return` statement's execution."
msgstr""
"如果执行 :keyword:`!try` 语句时遇到 :keyword:`break`,、:keyword:`continue` 或 "
":keyword:`return` 语句,则 :keyword:`!finally` 子句在执行 "
":keyword:`!break`、:keyword:`!continue` 或 :keyword:`!return` 语句之前执行。"
#:../../tutorial/errors.rst:366
msgid""
"If a :keyword:`!finally` clause includes a :keyword:`!return` statement, the"
" returned value will be the one from the :keyword:`!finally` clause's "
":keyword:`!return` statement, not the value from the :keyword:`!try` "
"clause's :keyword:`!return` statement."
msgstr""
"如果 :keyword:`!finally` 子句中包含 :keyword:`!return` 语句,则返回值来自 "
":keyword:`!finally` 子句的某个 :keyword:`!return` 语句的返回值,而不是来自 :keyword:`!try` "
"子句的 :keyword:`!return` 语句的返回值。"
#:../../tutorial/errors.rst:372
msgid"For example::"
msgstr"例如:"
#:../../tutorial/errors.rst:383
msgid"A more complicated example::"
msgstr"这是一个比较复杂的例子:"
#:../../tutorial/errors.rst:408
msgid""
"As you can see, the :keyword:`finally` clause is executed in any event. The"
" :exc:`TypeError` raised by dividing two strings is not handled by the "
":keyword:`except` clause and therefore re-raised after the "
":keyword:`!finally` clause has been executed."
msgstr""
"如上所示,任何情况下都会执行 :keyword:`finally` 子句。:keyword:`except` 子句不处理两个字符串相除触发的 "
":exc:`TypeError`,因此会在 :keyword:`!finally` 子句执行后被重新触发。"
#:../../tutorial/errors.rst:413
msgid""
"In real world applications, the :keyword:`finally` clause is useful for "
"releasing external resources (such as files or network connections), "
"regardless of whether the use of the resource was successful."
msgstr"在实际应用程序中,:keyword:`finally` 子句对于释放外部资源(例如文件或者网络连接)非常有用,无论是否成功使用资源。"
#:../../tutorial/errors.rst:421
msgid"Predefined Clean-up Actions"
msgstr"预定义的清理操作"
#:../../tutorial/errors.rst:423
msgid""
"Some objects define standard clean-up actions to be undertaken when the "
"object is no longer needed, regardless of whether or not the operation using"
" the object succeeded or failed. Look at the following example, which tries "
"to open a file and print its contents to the screen. ::"
msgstr""
"某些对象定义了不需要该对象时要执行的标准清理操作。无论使用该对象的操作是否成功,都会执行清理操作。比如,下例要打开一个文件,并输出文件内容:"
#:../../tutorial/errors.rst:431
msgid""
"The problem with this code is that it leaves the file open for an "
"indeterminate amount of time after this part of the code has finished "
"executing. This is not an issue in simple scripts, but can be a problem for "
"larger applications. The :keyword:`with` statement allows objects like files"
" to be used in a way that ensures they are always cleaned up promptly and "
"correctly. ::"
msgstr""
"这个代码的问题在于,执行完代码后,文件在一段不确定的时间内处于打开状态。在简单脚本中这没有问题,但对于较大的应用程序来说可能会出问题。:keyword:`with`"
" 语句支持以及时、正确的清理的方式使用文件对象:"
#:../../tutorial/errors.rst:441
msgid""
"After the statement is executed, the file *f* is always closed, even if a "
"problem was encountered while processing the lines. Objects which, like "
"files, provide predefined clean-up actions will indicate this in their "
"documentation."
msgstr"语句执行完毕后,即使在处理行时遇到问题,都会关闭文件 *f*。和文件一样,支持预定义清理操作的对象会在文档中指出这一点。"