-
-
Notifications
You must be signed in to change notification settings - Fork 91
Expand file tree
/
Copy pathexceptions.po
More file actions
1627 lines (1363 loc) · 67.7 KB
/
exceptions.po
File metadata and controls
1627 lines (1363 loc) · 67.7 KB
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
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
# 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:
# cdarlint <cdarling@126.com>, 2020
# allenjuly7 <allenjuly7@astu.fun>, 2020
# 叶浚安 <ye.pandaaaa906@gmail.com>, 2020
# ppcfish <ppcfish@gmail.com>, 2020
# Ziqi Wang <ziqiwang.xust@gmail.com>, 2020
# Yi Cao <1783250036@qq.com>, 2020
# jsgang <jsgang9@gmail.com>, 2020
# Jiuh.star <jiuh.star@gmail.com>, 2021
# helloworldSB <warningfor163@foxmail.com>, 2021
# Dai Xu <daixu61@hotmail.com>, 2022
# Freesand Leo <yuqinju@163.com>, 2022
# 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-07 17:05+0000\n"
"PO-Revision-Date: 2020-05-30 11:48+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"
#: ../../c-api/exceptions.rst:8
msgid "Exception Handling"
msgstr "异常处理"
#: ../../c-api/exceptions.rst:10
msgid ""
"The functions described in this chapter will let you handle and raise Python"
" exceptions. It is important to understand some of the basics of Python "
"exception handling. It works somewhat like the POSIX :c:data:`errno` "
"variable: there is a global indicator (per thread) of the last error that "
"occurred. Most C API functions don't clear this on success, but will set it"
" to indicate the cause of the error on failure. Most C API functions also "
"return an error indicator, usually ``NULL`` if they are supposed to return a"
" pointer, or ``-1`` if they return an integer (exception: the "
":c:func:`PyArg_\\*` functions return ``1`` for success and ``0`` for "
"failure)."
msgstr ""
"本章描述的函数将让你处理和触发 Python 异常。了解一些 Python 异常处理的基本知识是很重要的。 它的工作原理有点像 POSIX 的 "
":c:data:`errno` 变量:(每个线程)有一个全局指示器显示最近发生的错误。 大多数 C API "
"函数不会在成功时理会它,但会在失败时设置它来指示错误的原因。 多数 C API 函数也返回一个错误指示器,如果它们应该返回一个指针,通常返回 "
"``NULL``,如果返回一个整数,则返回 ``-1`` (例外: :c:func:`PyArg_\\*` 函数成功时返回 ``1`` 而失败时返回 "
"``0``)。"
#: ../../c-api/exceptions.rst:20
msgid ""
"Concretely, the error indicator consists of three object pointers: the "
"exception's type, the exception's value, and the traceback object. Any of "
"those pointers can be ``NULL`` if non-set (although some combinations are "
"forbidden, for example you can't have a non-``NULL`` traceback if the "
"exception type is ``NULL``)."
msgstr ""
"具体地说,错误指示器由三个对象指针组成:异常的类型,异常的值,和回溯对象。如果没有错误被设置,这些指针都可以是 ``NULL`` "
"(尽管一些组合使禁止的,例如,如果异常类型是 ``NULL``,你不能有一个非 ``NULL`` 的回溯)。"
#: ../../c-api/exceptions.rst:26
msgid ""
"When a function must fail because some function it called failed, it "
"generally doesn't set the error indicator; the function it called already "
"set it. It is responsible for either handling the error and clearing the "
"exception or returning after cleaning up any resources it holds (such as "
"object references or memory allocations); it should *not* continue normally "
"if it is not prepared to handle the error. If returning due to an error, it"
" is important to indicate to the caller that an error has been set. If the "
"error is not handled or carefully propagated, additional calls into the "
"Python/C API may not behave as intended and may fail in mysterious ways."
msgstr ""
"当一个函数由于它调用的某个函数失败而必须失败时,通常不会设置错误指示器;它调用的那个函数已经设置了它。而它负责处理错误和清理异常,或在清除其拥有的所有资源后返回(如对象应用或内存分配)。如果不准备处理异常,则"
" *不* 应该正常地继续。如果是由于一个错误返回,那么一定要向调用者表明已经设置了错误。如果错误没有得到处理或小心传播,对 Python/C "
"API的其它调用可能不会有预期的行为,并且可能会以某种神秘的方式失败。"
#: ../../c-api/exceptions.rst:37
msgid ""
"The error indicator is **not** the result of :func:`sys.exc_info()`. The "
"former corresponds to an exception that is not yet caught (and is therefore "
"still propagating), while the latter returns an exception after it is caught"
" (and has therefore stopped propagating)."
msgstr ""
"错误指示器 **不是** :func:`sys.exc_info()` "
"的执行结果。前者对应尚未捕获的异常(异常还在传播),而后者在捕获异常后返回这个异常(异常已经停止传播)。"
#: ../../c-api/exceptions.rst:44
msgid "Printing and clearing"
msgstr "打印和清理"
#: ../../c-api/exceptions.rst:49
msgid ""
"Clear the error indicator. If the error indicator is not set, there is no "
"effect."
msgstr "清除错误指示器。如果没有设置错误指示器,则不会有作用。"
#: ../../c-api/exceptions.rst:55
msgid ""
"Print a standard traceback to ``sys.stderr`` and clear the error indicator. "
"**Unless** the error is a ``SystemExit``, in that case no traceback is "
"printed and the Python process will exit with the error code specified by "
"the ``SystemExit`` instance."
msgstr ""
"将标准回溯打印到 ``sys.stderr`` 并清除错误指示器。**除非** 错误是 "
"``SystemExit``,这种情况下不会打印回溯进程,且会退出 Python 进程,并显示 ``SystemExit`` 实例指定的错误代码。"
#: ../../c-api/exceptions.rst:60
msgid ""
"Call this function **only** when the error indicator is set. Otherwise it "
"will cause a fatal error!"
msgstr "只有在错误指示器被设置时才需要调用这个函数,否则这会导致错误!"
#: ../../c-api/exceptions.rst:63
msgid ""
"If *set_sys_last_vars* is nonzero, the variables :data:`sys.last_type`, "
":data:`sys.last_value` and :data:`sys.last_traceback` will be set to the "
"type, value and traceback of the printed exception, respectively."
msgstr ""
"如果 *set_sys_last_vars* 非零,则变量 :data:`sys.last_type`,:data:`sys.last_value` 和"
" :data:`sys.last_traceback` 将分别设置为打印异常的类型,值和回溯。"
#: ../../c-api/exceptions.rst:70
msgid "Alias for ``PyErr_PrintEx(1)``."
msgstr "``PyErr_PrintEx(1)`` 的别名。"
#: ../../c-api/exceptions.rst:75
msgid ""
"Call :func:`sys.unraisablehook` using the current exception and *obj* "
"argument."
msgstr "使用当前异常和 *obj* 参数调用 :func:`sys.unraisablehook`。"
#: ../../c-api/exceptions.rst:78
msgid ""
"This utility function prints a warning message to ``sys.stderr`` when an "
"exception has been set but it is impossible for the interpreter to actually "
"raise the exception. It is used, for example, when an exception occurs in "
"an :meth:`__del__` method."
msgstr ""
"当设置了异常,但解释器不可能实际地触发异常时,这个实用函数向 ``sys.stderr`` 打印一个警告信息。例如,当 :meth:`__del__` "
"方法中发生异常时使用这个函数。"
#: ../../c-api/exceptions.rst:83
msgid ""
"The function is called with a single argument *obj* that identifies the "
"context in which the unraisable exception occurred. If possible, the repr of"
" *obj* will be printed in the warning message."
msgstr "该函数使用单个参数 *obj* 进行调用,该参数标识发生不可触发异常的上下文。如果可能,*obj* 的报告将打印在警告消息中。"
#: ../../c-api/exceptions.rst:87
msgid "An exception must be set when calling this function."
msgstr "调用此函数时必须设置一个异常。"
#: ../../c-api/exceptions.rst:91
msgid "Raising exceptions"
msgstr "抛出异常"
#: ../../c-api/exceptions.rst:93
msgid ""
"These functions help you set the current thread's error indicator. For "
"convenience, some of these functions will always return a ``NULL`` pointer "
"for use in a ``return`` statement."
msgstr "这些函数可帮助你设置当前线程的错误指示器。为了方便起见,一些函数将始终返回 ``NULL`` 指针,以便用于 ``return`` 语句。"
#: ../../c-api/exceptions.rst:100
msgid ""
"This is the most common way to set the error indicator. The first argument "
"specifies the exception type; it is normally one of the standard exceptions,"
" e.g. :c:data:`PyExc_RuntimeError`. You need not increment its reference "
"count. The second argument is an error message; it is decoded from "
"``'utf-8``'."
msgstr ""
"这是设置错误指示器最常用的方法。第一个参数指定异常类型;它通常是标准异常之一,e.g. "
":c:data:`PyExc_RuntimeError`。你不务要增加它的引用计数。第二个参数是错误信息,它解码自 ``'utf-8'``。"
#: ../../c-api/exceptions.rst:108
msgid ""
"This function is similar to :c:func:`PyErr_SetString` but lets you specify "
"an arbitrary Python object for the \"value\" of the exception."
msgstr "此函数类似于 :c:func:`PyErr_SetString`,但是允许你为异常的“值”指定任意一个 Python 对象。"
#: ../../c-api/exceptions.rst:114
msgid ""
"This function sets the error indicator and returns ``NULL``. *exception* "
"should be a Python exception class. The *format* and subsequent parameters "
"help format the error message; they have the same meaning and values as in "
":c:func:`PyUnicode_FromFormat`. *format* is an ASCII-encoded string."
msgstr ""
"这个函数设置了一个错误指示器并且返回了 ``NULL``,*exception* 应当是一个 Python 中的异常类。*format* "
"和随后的形参会帮助格式化这个错误的信息;它们与 :c:func:`PyUnicode_FromFormat` 有着相同的含义和值。*format* "
"是一个ASCII编码的字符串。"
#: ../../c-api/exceptions.rst:123
msgid ""
"Same as :c:func:`PyErr_Format`, but taking a :c:type:`va_list` argument "
"rather than a variable number of arguments."
msgstr ""
"和 :c:func:`PyErr_Format` 相同,但它接受一个 :c:type:`va_list` 类型的参数而不是可变数量的参数集。"
#: ../../c-api/exceptions.rst:131
msgid "This is a shorthand for ``PyErr_SetObject(type, Py_None)``."
msgstr "这是 ``PyErr_SetObject(type, Py_None)`` 的简写。"
#: ../../c-api/exceptions.rst:136
msgid ""
"This is a shorthand for ``PyErr_SetString(PyExc_TypeError, message)``, where"
" *message* indicates that a built-in operation was invoked with an illegal "
"argument. It is mostly for internal use."
msgstr ""
"这是 ``PyErr_SetString(PyExc_TypeError, message)`` 的简写,其中 *message* "
"指出使用了非法参数调用内置操作。它主要用于内部使用。"
#: ../../c-api/exceptions.rst:143
msgid ""
"This is a shorthand for ``PyErr_SetNone(PyExc_MemoryError)``; it returns "
"``NULL`` so an object allocation function can write ``return "
"PyErr_NoMemory();`` when it runs out of memory."
msgstr ""
"这是 ``PyErr_SetNone(PyExc_MemoryError)`` 的简写;它返回 ``NULL`` ,以便当内存耗尽时,对象分配函数可以写"
" ``return PyErr_NoMemory();`` 。"
#: ../../c-api/exceptions.rst:152
msgid ""
"This is a convenience function to raise an exception when a C library "
"function has returned an error and set the C variable :c:data:`errno`. It "
"constructs a tuple object whose first item is the integer :c:data:`errno` "
"value and whose second item is the corresponding error message (gotten from "
":c:func:`strerror`), and then calls ``PyErr_SetObject(type, object)``. On "
"Unix, when the :c:data:`errno` value is :const:`EINTR`, indicating an "
"interrupted system call, this calls :c:func:`PyErr_CheckSignals`, and if "
"that set the error indicator, leaves it set to that. The function always "
"returns ``NULL``, so a wrapper function around a system call can write "
"``return PyErr_SetFromErrno(type);`` when the system call returns an error."
msgstr ""
"这是个便捷函数,当 C 库函数返回错误并设置 :c:data:`errno` 时,这个函数会触发异常。它构造一个元组对象,其第一项是整数值 "
":c:data:`errno`,第二项是相应的错误消息(从 :c:func:`strerror` 获取),然后调用 "
"``PyErr_SetObject(type, object)``。在 Unix 上,当 :c:data:`errno` 值是 "
":const:`EINTR` ,即中断的系统调用时,这个函数会调用 :c:func:`PyErr_CheckSignals` "
",如果设置了错误指示器,则将其设置为该值。该函数永远返回 ``NULL`` ,因此当系统调用返回错误时,围绕系统调用的包装函数可以写成 ``return"
" PyErr_SetFromErrno(type);``。"
#: ../../c-api/exceptions.rst:166
msgid ""
"Similar to :c:func:`PyErr_SetFromErrno`, with the additional behavior that "
"if *filenameObject* is not ``NULL``, it is passed to the constructor of "
"*type* as a third parameter. In the case of :exc:`OSError` exception, this "
"is used to define the :attr:`filename` attribute of the exception instance."
msgstr ""
"类似于 :c:func:`PyErr_SetFromErrno` ,附加的行为是如果 *filenameObject* 不为 ``NULL`` "
",它将作为第三个参数传递给 *type* 的构造函数。举个例子,在 :exc:`OSError` 异常中,*filenameObject* "
"将用来定义异常实例的 :attr:`filename` 属性。"
#: ../../c-api/exceptions.rst:175
msgid ""
"Similar to :c:func:`PyErr_SetFromErrnoWithFilenameObject`, but takes a "
"second filename object, for raising errors when a function that takes two "
"filenames fails."
msgstr ""
"类似于 :c:func:`PyErr_SetFromErrnoWithFilenameObject` ,但接受第二个 filename "
"对象,用于当一个接受两个 filename 的函数失败时触发错误。"
#: ../../c-api/exceptions.rst:184
msgid ""
"Similar to :c:func:`PyErr_SetFromErrnoWithFilenameObject`, but the filename "
"is given as a C string. *filename* is decoded from the filesystem encoding "
"(:func:`os.fsdecode`)."
msgstr ""
"类似于 :c:func:`PyErr_SetFromErrnoWithFilenameObject` ,但文件名以 C 字符串形式给出。 "
"*filename* 是从文件系统编码(:func:`os.fsdecode`)解码出来的。"
#: ../../c-api/exceptions.rst:191
msgid ""
"This is a convenience function to raise :exc:`WindowsError`. If called with "
"*ierr* of :c:data:`0`, the error code returned by a call to "
":c:func:`GetLastError` is used instead. It calls the Win32 function "
":c:func:`FormatMessage` to retrieve the Windows description of error code "
"given by *ierr* or :c:func:`GetLastError`, then it constructs a tuple object"
" whose first item is the *ierr* value and whose second item is the "
"corresponding error message (gotten from :c:func:`FormatMessage`), and then "
"calls ``PyErr_SetObject(PyExc_WindowsError, object)``. This function always "
"returns ``NULL``."
msgstr ""
"这是触发 :exc:`WindowsError` 的便捷函数。如果 *lerr* 为 :c:data:`0` ,则改用调用 "
":c:func:`GetLastError` 返回的错误代码。它调用 Win32 函数 :c:func:`FormatMessage` 来检索 "
"*ierr* 或 :c:func:`GetLastError` 给定的错误代码的 Windows 描述,然后构造一个元组对象,其第一项是 *ierr* "
"值,第二项是相应的错误信息(从 :c:func:`FormatMessage` 获取),然后调用 "
"``PyErr_SetObject(PyExc_WindowsError, object)`` 。该函数永远返回 ``NULL`` 。"
#: ../../c-api/exceptions.rst:200 ../../c-api/exceptions.rst:208
#: ../../c-api/exceptions.rst:217 ../../c-api/exceptions.rst:225
#: ../../c-api/exceptions.rst:234 ../../c-api/exceptions.rst:243
msgid ":ref:`Availability <availability>`: Windows."
msgstr ":ref:`可用性 <availability>`: Windows。"
#: ../../c-api/exceptions.rst:205
msgid ""
"Similar to :c:func:`PyErr_SetFromWindowsErr`, with an additional parameter "
"specifying the exception type to be raised."
msgstr "类似于 :c:func:`PyErr_SetFromWindowsErr` ,额外的参数指定要触发的异常类型。"
#: ../../c-api/exceptions.rst:213
msgid ""
"Similar to :c:func:`PyErr_SetFromWindowsErrWithFilenameObject`, but the "
"filename is given as a C string. *filename* is decoded from the filesystem "
"encoding (:func:`os.fsdecode`)."
msgstr ""
"类似于 :c:func:`PyErr_SetFromWindowsErrWithFilenameObject` ,但是 filename 是以 C "
"字符串形式给出的。 *filename* 是从文件系统编码(:func:`os.fsdecode`)解码出来的。"
#: ../../c-api/exceptions.rst:222
msgid ""
"Similar to :c:func:`PyErr_SetFromWindowsErrWithFilenameObject`, with an "
"additional parameter specifying the exception type to be raised."
msgstr ""
"类似于 :c:func:`PyErr_SetFromWindowsErrWithFilenameObject` ,额外参数指定要触发的异常类型。"
#: ../../c-api/exceptions.rst:230
msgid ""
"Similar to :c:func:`PyErr_SetExcFromWindowsErrWithFilenameObject`, but "
"accepts a second filename object."
msgstr ""
"类似于 :c:func:`PyErr_SetExcFromWindowsErrWithFilenameObject` ,但是接受第二个 filename"
" 对象。"
#: ../../c-api/exceptions.rst:240
msgid ""
"Similar to :c:func:`PyErr_SetFromWindowsErrWithFilename`, with an additional"
" parameter specifying the exception type to be raised."
msgstr "类似于 :c:func:`PyErr_SetFromWindowsErrWithFilename` ,额外参数指定要触发的异常类型。"
#: ../../c-api/exceptions.rst:248
msgid ""
"This is a convenience function to raise :exc:`ImportError`. *msg* will be "
"set as the exception's message string. *name* and *path*, both of which can "
"be ``NULL``, will be set as the :exc:`ImportError`'s respective ``name`` and"
" ``path`` attributes."
msgstr ""
"这是触发 :exc:`ImportError` 的便捷函数。 *msg* 将被设为异常的消息字符串。 *name* 和 *path* ,(都可以为 "
"``NULL`` ),将用来被设置 :exc:`ImportError` 对应的属性 ``name`` 和 ``path``。"
#: ../../c-api/exceptions.rst:258
msgid ""
"Set file, line, and offset information for the current exception. If the "
"current exception is not a :exc:`SyntaxError`, then it sets additional "
"attributes, which make the exception printing subsystem think the exception "
"is a :exc:`SyntaxError`."
msgstr ""
"设置当前异常的文件,行和偏移信息。如果当前异常不是 :exc:`SyntaxError` ,则它设置额外的属性,使异常打印子系统认为异常是 "
":exc:`SyntaxError`。"
#: ../../c-api/exceptions.rst:268
msgid ""
"Like :c:func:`PyErr_SyntaxLocationObject`, but *filename* is a byte string "
"decoded from the filesystem encoding (:func:`os.fsdecode`)."
msgstr ""
"与 :c:func:`PyErr_SyntaxLocationObject` 类似,只是 *filename* 是从文件系统编码( "
":func:`os.fsdecode` )解码出的一个字节字符串。"
#: ../../c-api/exceptions.rst:276
msgid ""
"Like :c:func:`PyErr_SyntaxLocationEx`, but the col_offset parameter is "
"omitted."
msgstr "与 :c:func:`PyErr_SyntaxLocationEx` 类似,但省略了参数 col_offset。"
#: ../../c-api/exceptions.rst:282
msgid ""
"This is a shorthand for ``PyErr_SetString(PyExc_SystemError, message)``, "
"where *message* indicates that an internal operation (e.g. a Python/C API "
"function) was invoked with an illegal argument. It is mostly for internal "
"use."
msgstr ""
"这是 ``PyErr_SetString(PyExc_SystemError, message)`` 的缩写,其中 *message* "
"表示使用了非法参数调用内部操作(例如,Python/C API 函数)。它主要用于内部使用。"
#: ../../c-api/exceptions.rst:289
msgid "Issuing warnings"
msgstr "发出警告"
#: ../../c-api/exceptions.rst:291
msgid ""
"Use these functions to issue warnings from C code. They mirror similar "
"functions exported by the Python :mod:`warnings` module. They normally "
"print a warning message to *sys.stderr*; however, it is also possible that "
"the user has specified that warnings are to be turned into errors, and in "
"that case they will raise an exception. It is also possible that the "
"functions raise an exception because of a problem with the warning "
"machinery. The return value is ``0`` if no exception is raised, or ``-1`` if"
" an exception is raised. (It is not possible to determine whether a warning"
" message is actually printed, nor what the reason is for the exception; this"
" is intentional.) If an exception is raised, the caller should do its "
"normal exception handling (for example, :c:func:`Py_DECREF` owned references"
" and return an error value)."
msgstr ""
"这些函数可以从 C 代码中发出警告。它们仿照了由 Python 模块 :mod:`warnings` 导出的那些函数。它们通常向 "
"*sys.stderr* "
"打印一条警告信息;当然,用户也有可能已经指定将警告转换为错误,在这种情况下,它们将触发异常。也有可能由于警告机制出现问题,使得函数触发异常。如果没有触发异常,返回值为"
" ``0`` ;如果触发异常,返回值为 "
"``-1``。(无法确定是否实际打印了警告信息,也无法确定异常触发的原因。这是故意为之)。如果触发了异常,调用者应该进行正常的异常处理(例如,:c:func:`Py_DECREF`"
" 持有引用并返回一个错误值)。"
#: ../../c-api/exceptions.rst:306
msgid ""
"Issue a warning message. The *category* argument is a warning category (see"
" below) or ``NULL``; the *message* argument is a UTF-8 encoded string. "
"*stack_level* is a positive number giving a number of stack frames; the "
"warning will be issued from the currently executing line of code in that "
"stack frame. A *stack_level* of 1 is the function calling "
":c:func:`PyErr_WarnEx`, 2 is the function above that, and so forth."
msgstr ""
"发出一个警告信息。参数 *category* 是一个警告类别(见下面)或 ``NULL`` ; *message* 是一个 UTF-8 编码的字符串。 "
"*stack_level* 是一个给出栈帧数量的正数;警告将从该栈帧中当前正在执行的代码行发出。 *stack_level* 为 1 的是调用 "
":c:func:`PyErr_WarnEx` 的函数,2 是在此之上的函数,以此类推。"
#: ../../c-api/exceptions.rst:313
msgid ""
"Warning categories must be subclasses of :c:data:`PyExc_Warning`; "
":c:data:`PyExc_Warning` is a subclass of :c:data:`PyExc_Exception`; the "
"default warning category is :c:data:`PyExc_RuntimeWarning`. The standard "
"Python warning categories are available as global variables whose names are "
"enumerated at :ref:`standardwarningcategories`."
msgstr ""
"警告类别必须是 :c:data:`PyExc_Warning` 的子类, :c:data:`PyExc_Warning` 是 "
":c:data:`PyExc_Exception` 的子类;默认警告类别是 :c:data:`PyExc_RuntimeWarning` 。标准 "
"Python 警告类别作为全局变量可用,所有其名称见 :ref:`standardwarningcategories` 。"
#: ../../c-api/exceptions.rst:319
msgid ""
"For information about warning control, see the documentation for the "
":mod:`warnings` module and the :option:`-W` option in the command line "
"documentation. There is no C API for warning control."
msgstr ""
"有关警告控制的信息,参见模块文档 :mod:`warnings` 和命令行文档中的 :option:`-W` 选项。没有用于警告控制的 C API。"
#: ../../c-api/exceptions.rst:325
msgid ""
"Much like :c:func:`PyErr_SetImportError` but this function allows for "
"specifying a subclass of :exc:`ImportError` to raise."
msgstr ""
"和 :c:func:`PyErr_SetImportError` 很类似,但这个函数允许指定一个 :exc:`ImportError` 的子类来触发。"
#: ../../c-api/exceptions.rst:333
msgid ""
"Issue a warning message with explicit control over all warning attributes. "
"This is a straightforward wrapper around the Python function "
":func:`warnings.warn_explicit`, see there for more information. The "
"*module* and *registry* arguments may be set to ``NULL`` to get the default "
"effect described there."
msgstr ""
#: ../../c-api/exceptions.rst:344
msgid ""
"Similar to :c:func:`PyErr_WarnExplicitObject` except that *message* and "
"*module* are UTF-8 encoded strings, and *filename* is decoded from the "
"filesystem encoding (:func:`os.fsdecode`)."
msgstr ""
#: ../../c-api/exceptions.rst:351
msgid ""
"Function similar to :c:func:`PyErr_WarnEx`, but use "
":c:func:`PyUnicode_FromFormat` to format the warning message. *format* is "
"an ASCII-encoded string."
msgstr ""
"类似于 :c:func:`PyErr_WarnEx` 的函数,但使用 :c:func:`PyUnicode_FromFormat` 来格式化警告消息。 "
"*format* 是使用 ASCII 编码的字符串。"
#: ../../c-api/exceptions.rst:360
msgid ""
"Function similar to :c:func:`PyErr_WarnFormat`, but *category* is "
":exc:`ResourceWarning` and it passes *source* to "
":func:`warnings.WarningMessage`."
msgstr ""
"类似于 :c:func:`PyErr_WarnFormat` 的函数,但 *category* 是 :exc:`ResourceWarning` "
"并且它会将 *source* 传给 :func:`warnings.WarningMessage`。"
#: ../../c-api/exceptions.rst:367
msgid "Querying the error indicator"
msgstr "查询错误指示器"
#: ../../c-api/exceptions.rst:371
msgid ""
"Test whether the error indicator is set. If set, return the exception "
"*type* (the first argument to the last call to one of the "
":c:func:`PyErr_Set\\*` functions or to :c:func:`PyErr_Restore`). If not "
"set, return ``NULL``. You do not own a reference to the return value, so "
"you do not need to :c:func:`Py_DECREF` it."
msgstr ""
"检测是否设置了错误指示器。 如已设置,则返回异常 *type* (传给最近一次对某个 :c:func:`PyErr_Set\\*` 函数或 "
":c:func:`PyErr_Restore` 的调用的第一个参数)。 如未设置,则返回 ``NULL``。 "
"你并不拥有对返回值的引用,因此你不需要对它执行 :c:func:`Py_DECREF`。"
#: ../../c-api/exceptions.rst:379
msgid ""
"Do not compare the return value to a specific exception; use "
":c:func:`PyErr_ExceptionMatches` instead, shown below. (The comparison "
"could easily fail since the exception may be an instance instead of a class,"
" in the case of a class exception, or it may be a subclass of the expected "
"exception.)"
msgstr ""
"不要将返回值与特定的异常进行比较;请改为使用 :c:func:`PyErr_ExceptionMatches`,如下所示。 "
"(比较很容易失败因为对于类异常来说,异常可能是一个实例而不是类,或者它可能是预期的异常的一个子类。)"
#: ../../c-api/exceptions.rst:387
msgid ""
"Equivalent to ``PyErr_GivenExceptionMatches(PyErr_Occurred(), exc)``. This "
"should only be called when an exception is actually set; a memory access "
"violation will occur if no exception has been raised."
msgstr ""
"等价于 ``PyErr_GivenExceptionMatches(PyErr_Occurred(), exc)``。 "
"此函数应当只在实际设置了异常时才被调用;如果没有任何异常被引发则将发生非法内存访问。"
#: ../../c-api/exceptions.rst:394
msgid ""
"Return true if the *given* exception matches the exception type in *exc*. "
"If *exc* is a class object, this also returns true when *given* is an "
"instance of a subclass. If *exc* is a tuple, all exception types in the "
"tuple (and recursively in subtuples) are searched for a match."
msgstr ""
"如果 *given* 异常与 *exc* 中的异常类型相匹配则返回真值。 如果 *exc* 是一个类对象,则当 *given* "
"是一个子类的实例时也将返回真值。 如果 *exc* 是一个元组,则该元组(以及递归的子元组)中的所有异常类型都将被搜索进行匹配。"
#: ../../c-api/exceptions.rst:402
msgid ""
"Retrieve the error indicator into three variables whose addresses are "
"passed. If the error indicator is not set, set all three variables to "
"``NULL``. If it is set, it will be cleared and you own a reference to each "
"object retrieved. The value and traceback object may be ``NULL`` even when "
"the type object is not."
msgstr ""
"将错误指示符提取到三个变量中并传递其地址。 如果未设置错误指示符,则将三个变量都设为 ``NULL``。 "
"如果已设置,则将其清除并且你将得到对所提取的每个对象的引用。 值和回溯对象可以为 ``NULL`` 即使类型对象不为空。"
#: ../../c-api/exceptions.rst:409
msgid ""
"This function is normally only used by code that needs to catch exceptions "
"or by code that needs to save and restore the error indicator temporarily, "
"e.g.::"
msgstr "此函数通常只被需要捕获异常的代码或需要临时保存和恢复错误指示符的代码所使用,例如::"
#: ../../c-api/exceptions.rst:424
msgid ""
"Set the error indicator from the three objects. If the error indicator is "
"already set, it is cleared first. If the objects are ``NULL``, the error "
"indicator is cleared. Do not pass a ``NULL`` type and non-``NULL`` value or"
" traceback. The exception type should be a class. Do not pass an invalid "
"exception type or value. (Violating these rules will cause subtle problems "
"later.) This call takes away a reference to each object: you must own a "
"reference to each object before the call and after the call you no longer "
"own these references. (If you don't understand this, don't use this "
"function. I warned you.)"
msgstr ""
"基于三个对象设置错误指示符。 如果错误指示符已设置,它将首先被清除。 如果三个对象均为 ``NULL``,错误指示器将被清除。 请不要传入 "
"``NULL`` 类型和非 ``NULL`` 值或回溯。 异常类型应当是一个类。 请不要传入无效的异常类型或值。 (违反这些规则将导致微妙的后续问题。)"
" 此调用会带走对每个对象的引用:你必须在调用之前拥有对每个对象的引用且在调用之后你将不再拥有这些引用。 (如果你不理解这一点,就不要使用此函数。 "
"勿谓言之不预。)"
#: ../../c-api/exceptions.rst:436
msgid ""
"This function is normally only used by code that needs to save and restore "
"the error indicator temporarily. Use :c:func:`PyErr_Fetch` to save the "
"current error indicator."
msgstr "此函数通常只被需要临时保存和恢复错误指示符的代码所使用。 请使用 :c:func:`PyErr_Fetch` 来保存当前的错误指示符。"
#: ../../c-api/exceptions.rst:443
msgid ""
"Under certain circumstances, the values returned by :c:func:`PyErr_Fetch` "
"below can be \"unnormalized\", meaning that ``*exc`` is a class object but "
"``*val`` is not an instance of the same class. This function can be used "
"to instantiate the class in that case. If the values are already "
"normalized, nothing happens. The delayed normalization is implemented to "
"improve performance."
msgstr ""
"在特定情况下,下面 :c:func:`PyErr_Fetch` 所返回的值可以是“非正规化的”,即 ``*exc`` 是一个类对象而 ``*val`` "
"不是同一个类的实例。 在这种情况下此函数可以被用来实例化类。 如果值已经是正规化的,则不做任何操作。 实现这种延迟正规化是为了提升性能。"
#: ../../c-api/exceptions.rst:451
msgid ""
"This function *does not* implicitly set the ``__traceback__`` attribute on "
"the exception value. If setting the traceback appropriately is desired, the "
"following additional snippet is needed::"
msgstr "此函数 *不会* 显式地在异常值上设置 ``__traceback__`` 属性。 如果想要适当地设置回溯,还需要以下附加代码片段::"
#: ../../c-api/exceptions.rst:462
msgid ""
"Retrieve the exception info, as known from ``sys.exc_info()``. This refers "
"to an exception that was *already caught*, not to an exception that was "
"freshly raised. Returns new references for the three objects, any of which "
"may be ``NULL``. Does not modify the exception info state."
msgstr ""
"提取异常信息,即从 ``sys.exc_info()`` 所得到的。 这是指一个 *已被捕获* 的异常,而不是刚被引发的异常。 "
"返回分别指向三个对象的新引用,其中任何一个均可以为 ``NULL``。 不会修改异常信息的状态。"
#: ../../c-api/exceptions.rst:469
msgid ""
"This function is not normally used by code that wants to handle exceptions. "
"Rather, it can be used when code needs to save and restore the exception "
"state temporarily. Use :c:func:`PyErr_SetExcInfo` to restore or clear the "
"exception state."
msgstr ""
"此函数通常不会被需要处理异常的代码所使用。 它被使用的场合是在代码需要临时保存并恢复异常状态的时候。 请使用 "
":c:func:`PyErr_SetExcInfo` 来恢复或清除异常状态。"
#: ../../c-api/exceptions.rst:479
msgid ""
"Set the exception info, as known from ``sys.exc_info()``. This refers to an"
" exception that was *already caught*, not to an exception that was freshly "
"raised. This function steals the references of the arguments. To clear the "
"exception state, pass ``NULL`` for all three arguments. For general rules "
"about the three arguments, see :c:func:`PyErr_Restore`."
msgstr ""
"设置异常信息,即从 ``sys.exc_info()`` 所得到的。 这是指一个 *已被捕获* 的异常,而不是刚被引发的异常。 "
"此函数会偷取对参数的引用。 要清空异常状态,请为所有三个参数传入 ``NULL``。 对于有关三个参数的一般规则,请参阅 "
":c:func:`PyErr_Restore`。"
#: ../../c-api/exceptions.rst:487
msgid ""
"This function is not normally used by code that wants to handle exceptions. "
"Rather, it can be used when code needs to save and restore the exception "
"state temporarily. Use :c:func:`PyErr_GetExcInfo` to read the exception "
"state."
msgstr ""
"此函数通常不会被需要处理异常的代码所使用。 它被使用的场合是在代码需要临时保存并恢复异常状态的情况。 请使用 "
":c:func:`PyErr_GetExcInfo` 来读取异常状态。"
#: ../../c-api/exceptions.rst:496
msgid "Signal Handling"
msgstr "信号处理"
#: ../../c-api/exceptions.rst:506
msgid ""
"This function interacts with Python's signal handling. It checks whether a "
"signal has been sent to the processes and if so, invokes the corresponding "
"signal handler. If the :mod:`signal` module is supported, this can invoke a"
" signal handler written in Python. In all cases, the default effect for "
":const:`SIGINT` is to raise the :exc:`KeyboardInterrupt` exception. If an "
"exception is raised the error indicator is set and the function returns "
"``-1``; otherwise the function returns ``0``. The error indicator may or "
"may not be cleared if it was previously set."
msgstr ""
#: ../../c-api/exceptions.rst:522
msgid ""
"Simulate the effect of a :const:`SIGINT` signal arriving. The next time "
":c:func:`PyErr_CheckSignals` is called, the Python signal handler for "
":const:`SIGINT` will be called."
msgstr ""
#: ../../c-api/exceptions.rst:526
msgid ""
"If :const:`SIGINT` isn't handled by Python (it was set to "
":data:`signal.SIG_DFL` or :data:`signal.SIG_IGN`), this function does "
"nothing."
msgstr ""
"如果 Python 没有处理 :const:`signal.SIGINT` (将它设为 :data:`signal.SIG_DFL` 或 "
":data:`signal.SIG_IGN`),此函数将不做任何事。"
#: ../../c-api/exceptions.rst:532
msgid ""
"This utility function specifies a file descriptor to which the signal number"
" is written as a single byte whenever a signal is received. *fd* must be "
"non-blocking. It returns the previous such file descriptor."
msgstr ""
"这个工具函数指定了一个每当收到信号时将被作为以单个字节的形式写入信号编号的目标的文件描述符。 *fd* 必须是非阻塞的。 "
"它将返回前一个这样的文件描述符。"
#: ../../c-api/exceptions.rst:536
msgid ""
"The value ``-1`` disables the feature; this is the initial state. This is "
"equivalent to :func:`signal.set_wakeup_fd` in Python, but without any error "
"checking. *fd* should be a valid file descriptor. The function should only"
" be called from the main thread."
msgstr ""
"设置值 ``-1`` 将禁用该特性;这是初始状态。 这等价于 Python 中的 "
":func:`signal.set_wakeup_fd`,但是没有任何错误检查。 *fd* 应当是一个有效的文件描述符。 此函数应当只从主线程来调用。"
#: ../../c-api/exceptions.rst:541
msgid "On Windows, the function now also supports socket handles."
msgstr "在 Windows 上,此函数现在也支持套接字处理。"
#: ../../c-api/exceptions.rst:546
msgid "Exception Classes"
msgstr "Exception 类"
#: ../../c-api/exceptions.rst:550
msgid ""
"This utility function creates and returns a new exception class. The *name* "
"argument must be the name of the new exception, a C string of the form "
"``module.classname``. The *base* and *dict* arguments are normally "
"``NULL``. This creates a class object derived from :exc:`Exception` "
"(accessible in C as :c:data:`PyExc_Exception`)."
msgstr ""
"这个工具函数会创建并返回一个新的异常类。 *name* 参数必须为新异常的名称,是 ``module.classname`` 形式的 C 字符串。 "
"*base* 和 *dict* 参数通常为 ``NULL``。 这将创建一个派生自 :exc:`Exception` 的类对象(在 C 中可以通过 "
":c:data:`PyExc_Exception` 访问)。"
#: ../../c-api/exceptions.rst:556
msgid ""
"The :attr:`__module__` attribute of the new class is set to the first part "
"(up to the last dot) of the *name* argument, and the class name is set to "
"the last part (after the last dot). The *base* argument can be used to "
"specify alternate base classes; it can either be only one class or a tuple "
"of classes. The *dict* argument can be used to specify a dictionary of class"
" variables and methods."
msgstr ""
"新类的 :attr:`__module__` 属性将被设为 *name* "
"参数的前半部分(最后一个点号之前),而类名将被设为后半部分(最后一个点号之后)。 *base* "
"参数可被用来指定替代基类;它可以是一个类或是一个由类组成的元组。 *dict* 参数可被用来指定一个由类变量和方法组成的字典。"
#: ../../c-api/exceptions.rst:565
msgid ""
"Same as :c:func:`PyErr_NewException`, except that the new exception class "
"can easily be given a docstring: If *doc* is non-``NULL``, it will be used "
"as the docstring for the exception class."
msgstr ""
"和 :c:func:`PyErr_NewException` 一样,除了可以轻松地给新的异常类一个文档字符串:如果 *doc* "
"属性非空,它将用作异常类的文档字符串。"
#: ../../c-api/exceptions.rst:573
msgid "Exception Objects"
msgstr "异常对象"
#: ../../c-api/exceptions.rst:577
msgid ""
"Return the traceback associated with the exception as a new reference, as "
"accessible from Python through :attr:`__traceback__`. If there is no "
"traceback associated, this returns ``NULL``."
msgstr ""
"将与异常相关联的回溯作为一个新引用返回,可以通过 :attr:`__traceback__` 在 Python 中访问。 如果没有已关联的回溯,则返回 "
"``NULL``。"
#: ../../c-api/exceptions.rst:584
msgid ""
"Set the traceback associated with the exception to *tb*. Use ``Py_None`` to"
" clear it."
msgstr "将异常关联的回溯设置为 *tb* 。使用 ``Py_None`` 清除它。"
#: ../../c-api/exceptions.rst:590
msgid ""
"Return the context (another exception instance during whose handling *ex* "
"was raised) associated with the exception as a new reference, as accessible "
"from Python through :attr:`__context__`. If there is no context associated,"
" this returns ``NULL``."
msgstr ""
"将与异常相关联的上下文(在处理 *ex* 的过程中引发的另一个异常实例)作为一个新引用返回,可以通过 :attr:`__context__` 在 "
"Python 中访问。 如果没有已关联的上下文,则返回 ``NULL``。"
#: ../../c-api/exceptions.rst:598
msgid ""
"Set the context associated with the exception to *ctx*. Use ``NULL`` to "
"clear it. There is no type check to make sure that *ctx* is an exception "
"instance. This steals a reference to *ctx*."
msgstr ""
"将与异常相关联的上下文设置为 *ctx*。 使用 ``NULL`` 来清空它。 没有用来确保 *ctx* 是一个异常实例的类型检查。 这将窃取一个指向 "
"*ctx* 的引用。"
#: ../../c-api/exceptions.rst:605
msgid ""
"Return the cause (either an exception instance, or :const:`None`, set by "
"``raise ... from ...``) associated with the exception as a new reference, as"
" accessible from Python through :attr:`__cause__`."
msgstr ""
"将与异常相关联的原因(一个异常实例,或是 :const:`None`,由 ``raise ... from ...`` 设置)作为一个新引用返回,可在 "
"Python 中通过 :attr:`__cause__` 来访问。"
#: ../../c-api/exceptions.rst:612
msgid ""
"Set the cause associated with the exception to *cause*. Use ``NULL`` to "
"clear it. There is no type check to make sure that *cause* is either an "
"exception instance or :const:`None`. This steals a reference to *cause*."
msgstr ""
"将与异常相关联的原因设置为 *cause*。 使用 ``NULL`` 来清空它。 它没有用来确保 *cause* 是一个异常实例或 "
":const:`None` 的类型检查。 这将偷取一个指向 *cause* 的引用。"
#: ../../c-api/exceptions.rst:616
msgid ""
":attr:`__suppress_context__` is implicitly set to ``True`` by this function."
msgstr ":attr:`__suppress_context__` 会被此函数隐式地设为 ``True``。"
#: ../../c-api/exceptions.rst:622
msgid "Unicode Exception Objects"
msgstr "Unicode 异常对象"
#: ../../c-api/exceptions.rst:624
msgid ""
"The following functions are used to create and modify Unicode exceptions "
"from C."
msgstr "下列函数被用于创建和修改来自 C 的 Unicode 异常。"
#: ../../c-api/exceptions.rst:628
msgid ""
"Create a :class:`UnicodeDecodeError` object with the attributes *encoding*, "
"*object*, *length*, *start*, *end* and *reason*. *encoding* and *reason* are"
" UTF-8 encoded strings."
msgstr ""
"创建一个 :class:`UnicodeDecodeError` 对象并附带 *encoding*, *object*, *length*, "
"*start*, *end* 和 *reason* 等属性。 *encoding* 和 *reason* 为 UTF-8 编码的字符串。"
#: ../../c-api/exceptions.rst:634
msgid ""
"Create a :class:`UnicodeEncodeError` object with the attributes *encoding*, "
"*object*, *length*, *start*, *end* and *reason*. *encoding* and *reason* are"
" UTF-8 encoded strings."
msgstr ""
"创建一个 :class:`UnicodeEncodeError` 对象并附带 *encoding*, *object*, *length*, "
"*start*, *end* 和 *reason*。 *encoding* 和 *reason* 都是以 UTF-8 编码的字符串。"
#: ../../c-api/exceptions.rst:638 ../../c-api/exceptions.rst:648
msgid "3.11"
msgstr "3.11"
#: ../../c-api/exceptions.rst:640
msgid ""
"``Py_UNICODE`` is deprecated since Python 3.3. Please migrate to "
"``PyObject_CallFunction(PyExc_UnicodeEncodeError, \"sOnns\", ...)``."
msgstr ""
"``Py_UNICODE`` 自 Python 3.3 起已被弃用。 请迁移至 "
"``PyObject_CallFunction(PyExc_UnicodeEncodeError, \"sOnns\", ...)``。"
#: ../../c-api/exceptions.rst:645
msgid ""
"Create a :class:`UnicodeTranslateError` object with the attributes *object*,"
" *length*, *start*, *end* and *reason*. *reason* is a UTF-8 encoded string."
msgstr ""
"创建一个 :class:`UnicodeTranslateError` 对象并附带 *object*, *length*, *start*, *end*"
" 和 *reason*。 *reason* 是一个以 UTF-8 编码的字符串。"
#: ../../c-api/exceptions.rst:650
msgid ""
"``Py_UNICODE`` is deprecated since Python 3.3. Please migrate to "
"``PyObject_CallFunction(PyExc_UnicodeTranslateError, \"Onns\", ...)``."
msgstr ""
"``Py_UNICODE`` 自 Python 3.3 起已被弃用。 请迁移至 "
"``PyObject_CallFunction(PyExc_UnicodeTranslateError, \"Onns\", ...)``。"
#: ../../c-api/exceptions.rst:656
msgid "Return the *encoding* attribute of the given exception object."
msgstr "返回给定异常对象的 *encoding* 属性"
#: ../../c-api/exceptions.rst:662
msgid "Return the *object* attribute of the given exception object."
msgstr "返回给定异常对象的 *object* 属性"
#: ../../c-api/exceptions.rst:668
msgid ""
"Get the *start* attribute of the given exception object and place it into "
"*\\*start*. *start* must not be ``NULL``. Return ``0`` on success, ``-1`` "
"on failure."
msgstr ""
"获取给定异常对象的 *start* 属性并将其放入 *\\*start*。 *start* 必须不为 ``NULL``。 成功时返回 "
"``0``,失败时返回 ``-1``。"
#: ../../c-api/exceptions.rst:676
msgid ""
"Set the *start* attribute of the given exception object to *start*. Return "
"``0`` on success, ``-1`` on failure."
msgstr "将给定异常对象的 *start* 属性设为 *start*。 成功时返回 ``0``,失败时返回 ``-1``。"
#: ../../c-api/exceptions.rst:683
msgid ""
"Get the *end* attribute of the given exception object and place it into "
"*\\*end*. *end* must not be ``NULL``. Return ``0`` on success, ``-1`` on "
"failure."
msgstr ""
"获取给定异常对象的 *end* 属性并将其放入 *\\*end*。 *end* 必须不为 ``NULL``。 成功时返回 ``0``,失败时返回 "
"``-1``。"
#: ../../c-api/exceptions.rst:691
msgid ""
"Set the *end* attribute of the given exception object to *end*. Return "
"``0`` on success, ``-1`` on failure."
msgstr "将给定异常对象的 *end* 属性设为 *end*。 成功时返回 ``0``,失败时返回 ``-1``。"
#: ../../c-api/exceptions.rst:698
msgid "Return the *reason* attribute of the given exception object."
msgstr "返回给定异常对象的 *reason* 属性"
#: ../../c-api/exceptions.rst:704
msgid ""
"Set the *reason* attribute of the given exception object to *reason*. "
"Return ``0`` on success, ``-1`` on failure."
msgstr "将给定异常对象的 *reason* 属性设为 *reason*。 成功时返回 ``0``,失败时返回 ``-1``。"
#: ../../c-api/exceptions.rst:709
msgid "Recursion Control"
msgstr "递归控制"
#: ../../c-api/exceptions.rst:711
msgid ""
"These two functions provide a way to perform safe recursive calls at the C "
"level, both in the core and in extension modules. They are needed if the "
"recursive code does not necessarily invoke Python code (which tracks its "
"recursion depth automatically)."
msgstr ""
#: ../../c-api/exceptions.rst:718
msgid "Marks a point where a recursive C-level call is about to be performed."
msgstr "标记一个递归的 C 层级调用即将被执行的点位。"
#: ../../c-api/exceptions.rst:720
msgid ""
"If :const:`USE_STACKCHECK` is defined, this function checks if the OS stack "
"overflowed using :c:func:`PyOS_CheckStack`. In this is the case, it sets a "
":exc:`MemoryError` and returns a nonzero value."
msgstr ""
"如果定义了 :const:`USE_STACKCHECK`,此函数会使用 :c:func:`PyOS_CheckStack` "
"来检查操作系统堆栈是否溢出。 在这种情况下,它将设置一个 :exc:`MemoryError` 并返回非零值。"
#: ../../c-api/exceptions.rst:724
msgid ""
"The function then checks if the recursion limit is reached. If this is the "
"case, a :exc:`RecursionError` is set and a nonzero value is returned. "
"Otherwise, zero is returned."
msgstr ""
"随后此函数将检查是否达到递归限制。 如果是的话,将设置一个 :exc:`RecursionError` 并返回一个非零值。 在其他情况下,则返回零。"
#: ../../c-api/exceptions.rst:728
msgid ""
"*where* should be a string such as ``\" in instance check\"`` to be "
"concatenated to the :exc:`RecursionError` message caused by the recursion "
"depth limit."
msgstr ""
#: ../../c-api/exceptions.rst:734
msgid ""
"Ends a :c:func:`Py_EnterRecursiveCall`. Must be called once for each "
"*successful* invocation of :c:func:`Py_EnterRecursiveCall`."
msgstr ""
"结束一个 :c:func:`Py_EnterRecursiveCall`。 必须针对 :c:func:`Py_EnterRecursiveCall` "
"的每个 *成功的* 发起调用操作执行一次调用。"
#: ../../c-api/exceptions.rst:737
msgid ""
"Properly implementing :c:member:`~PyTypeObject.tp_repr` for container types "
"requires special recursion handling. In addition to protecting the stack, "
":c:member:`~PyTypeObject.tp_repr` also needs to track objects to prevent "
"cycles. The following two functions facilitate this functionality. "
"Effectively, these are the C equivalent to :func:`reprlib.recursive_repr`."
msgstr ""
"正确地针对容器类型实现 :c:member:`~PyTypeObject.tp_repr` 需要特别的递归处理。 "
"在保护栈之外,:c:member:`~PyTypeObject.tp_repr` 还需要追踪对象以防止出现循环。 以下两个函数将帮助完成此功能。 "
"从实际效果来说,这两个函数是 C 中对应 :func:`reprlib.recursive_repr` 的等价物。"
#: ../../c-api/exceptions.rst:745
msgid ""
"Called at the beginning of the :c:member:`~PyTypeObject.tp_repr` "
"implementation to detect cycles."
msgstr "在 :c:member:`~PyTypeObject.tp_repr` 实现的开头被调用以检测循环。"
#: ../../c-api/exceptions.rst:748
msgid ""
"If the object has already been processed, the function returns a positive "
"integer. In that case the :c:member:`~PyTypeObject.tp_repr` implementation "
"should return a string object indicating a cycle. As examples, "
":class:`dict` objects return ``{...}`` and :class:`list` objects return "
"``[...]``."
msgstr ""
"如果对象已经被处理,此函数将返回一个正整数。 在此情况下 :c:member:`~PyTypeObject.tp_repr` "
"实现应当返回一个指明发生循环的字符串对象。 例如,:class:`dict` 对象将返回 ``{...}`` 而 :class:`list` 对象将返回"
" ``[...]``。"
#: ../../c-api/exceptions.rst:754
msgid ""
"The function will return a negative integer if the recursion limit is "
"reached. In that case the :c:member:`~PyTypeObject.tp_repr` implementation "
"should typically return ``NULL``."
msgstr ""
"如果已达到递归限制则此函数将返回一个负正数。 在此情况下 :c:member:`~PyTypeObject.tp_repr` 实现通常应当返回 "
"``NULL``。"
#: ../../c-api/exceptions.rst:758
msgid ""
"Otherwise, the function returns zero and the "
":c:member:`~PyTypeObject.tp_repr` implementation can continue normally."
msgstr "在其他情况下,此函数将返回零而 :c:member:`~PyTypeObject.tp_repr` 实现将可正常继续。"
#: ../../c-api/exceptions.rst:763
msgid ""
"Ends a :c:func:`Py_ReprEnter`. Must be called once for each invocation of "
":c:func:`Py_ReprEnter` that returns zero."
msgstr ""
"结束一个 :c:func:`Py_ReprEnter`。 必须针对每个返回零的 :c:func:`Py_ReprEnter` 的发起调用操作调用一次。"
#: ../../c-api/exceptions.rst:770
msgid "Standard Exceptions"
msgstr "标准异常"
#: ../../c-api/exceptions.rst:772
msgid ""
"All standard Python exceptions are available as global variables whose names"
" are ``PyExc_`` followed by the Python exception name. These have the type "
":c:type:`PyObject*`; they are all class objects. For completeness, here are"
" all the variables:"
msgstr ""
"所有的 Python 标准异常都可用作全局变量,其名称为 ``PyExc_`` 跟上 Python 异常名称。这些变量是 "