From e2009c43ebed1ebd016c60095ee31667141e921f Mon Sep 17 00:00:00 2001 From: Sepehr Rasouli Date: Sun, 2 Aug 2026 19:29:02 +0330 Subject: [PATCH] Translate errors.po --- tutorial/errors.po | 548 +++++++++++++++++++++++++-------------------- 1 file changed, 310 insertions(+), 238 deletions(-) diff --git a/tutorial/errors.po b/tutorial/errors.po index 14378532f..e05b607b4 100644 --- a/tutorial/errors.po +++ b/tutorial/errors.po @@ -14,7 +14,7 @@ msgstr "" "Project-Id-Version: Python 3.14\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2026-07-25 12:59+0330\n" -"PO-Revision-Date: 2026-08-02 19:02+0330\n" +"PO-Revision-Date: 2026-08-02 19:22+0330\n" "Last-Translator: Alireza Shabani (Revisto) , 2025\n" "Language-Team: Persian (https://app.transifex.com/python-doc/teams/5390/fa/)\n" "Language: fa\n" @@ -30,13 +30,13 @@ 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 " +"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 "" -"تا اینجا پیام‌های خطا فقط به صورت کوتاه ذکر شده‌اند، اما اگر مثال‌ها را امتحان " -"کرده باشید احتمالاً برخی از آن‌ها را دیده‌اید. حداقل دو نوع متمایز از خطا وجود " -"دارد: *خطاهای دستوری* «syntax errors» و *استثناها* «exceptions»." +"تا اینجا پیام‌های خطا فقط به صورت کوتاه ذکر شده‌اند، اما اگر مثال‌ها را امتحان کرده " +"باشید احتمالاً برخی از آن‌ها را دیده‌اید. حداقل دو نوع متمایز از خطا وجود دارد: " +"*خطاهای دستوری* «syntax errors» و *استثناها* «exceptions»." #: ../../tutorial/errors.rst:15 msgid "Syntax Errors" @@ -44,11 +44,11 @@ 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::" +"Syntax errors, also known as parsing errors, are perhaps the most common kind of " +"complaint you get while you are still learning Python::" msgstr "" -"خطاهای دستوری، که به‌عنوان خطاهای تجزیه‌گر «parsing errors» نیز شناخته می‌شوند، " -"شاید رایج‌ترین نوع خطاهایی باشند که هنگام یادگیری پایتون با آن‌ها مواجه می‌شوید::" +"خطاهای دستوری، که به‌عنوان خطاهای تجزیه‌گر «parsing errors» نیز شناخته می‌شوند، شاید " +"رایج‌ترین نوع خطاهایی باشند که هنگام یادگیری پایتون با آن‌ها مواجه می‌شوید::" #: ../../tutorial/errors.rst:20 msgid "" @@ -66,24 +66,24 @@ msgstr "" #: ../../tutorial/errors.rst:26 msgid "" -"The parser repeats the offending line and displays little arrows pointing at " -"the place where the error was detected. Note that this is not always the place " -"that needs to be fixed. In the example, the error is detected at the " +"The parser repeats the offending line and displays little arrows pointing at the " +"place where the error was detected. Note that this is not always the place that " +"needs to be fixed. In the example, the error is detected at the " "function :func:`print`, since a colon (``':'``) is missing just before it." msgstr "" -"تجزیه‌گر «parser» خط مشکل‌دار را تکرار می‌کند و فلش‌های کوچکی را نشان می‌دهد که به " -"جایی اشاره دارند که خطا در آن شناسایی شده است.\n" +"تجزیه‌گر «parser» خط مشکل‌دار را تکرار می‌کند و فلش‌های کوچکی را نشان می‌دهد که به جایی " +"اشاره دارند که خطا در آن شناسایی شده است.\n" "توجه داشته باشید که این همیشه همان جایی نیست که باید اصلاح شود.\n" -"در این مثال، خطا در تابع :func:`print` شناسایی شده است، زیرا دو نقطه (``':'``) " -"درست قبل از آن وجود ندارد." +"در این مثال، خطا در تابع :func:`print` شناسایی شده است، زیرا دو نقطه (``':'``) درست " +"قبل از آن وجود ندارد." #: ../../tutorial/errors.rst:31 msgid "" -"The file name (```` in our example) and line number are printed so you " -"know where to look in case the input came from a file." +"The file name (```` in our example) and line number are printed so you know " +"where to look in case the input came from a file." msgstr "" -"نام فایل (در مثال ما ````) و شماره خط چاپ می‌ شوند تا اگر ورودی از یک " -"فایل آمده باشد، بدانید باید کجا را بررسی کنید." +"نام فایل (در مثال ما ````) و شماره خط چاپ می‌ شوند تا اگر ورودی از یک فایل " +"آمده باشد، بدانید باید کجا را بررسی کنید." #: ../../tutorial/errors.rst:38 msgid "Exceptions" @@ -91,18 +91,17 @@ msgstr "استثناء ها" #: ../../tutorial/errors.rst:40 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::" +"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 "" -"حتی اگر یک دستور یا عبارت از نظر دستوری «syntactically» درست باشد، ممکن است " -"هنگام اجرای آن خطایی رخ دهد. خطاهایی که هنگام اجرا شناسایی می‌شوند «استثنا» " -"«*exceptions*» نام دارند و الزاماً باعث توقف برنامه نمی‌شوند؛ به‌زودی خواهید آموخت " -"چگونه آن‌ها را در برنامه‌های پایتون مدیریت کنید. با این حال، بیشتر استثناها در " -"برنامه‌ها مدیریت نمی‌شوند و به پیام‌های خطا ختم می‌شوند، مانند چیزی که در اینجا " -"نمایش داده شده است::" +"حتی اگر یک دستور یا عبارت از نظر دستوری «syntactically» درست باشد، ممکن است هنگام " +"اجرای آن خطایی رخ دهد. خطاهایی که هنگام اجرا شناسایی می‌شوند «استثنا» «*exceptions*» " +"نام دارند و الزاماً باعث توقف برنامه نمی‌شوند؛ به‌زودی خواهید آموخت چگونه آن‌ها را در " +"برنامه‌های پایتون مدیریت کنید. با این حال، بیشتر استثناها در برنامه‌ها مدیریت نمی‌شوند " +"و به پیام‌های خطا ختم می‌شوند، مانند چیزی که در اینجا نمایش داده شده است::" #: ../../tutorial/errors.rst:46 msgid "" @@ -147,26 +146,25 @@ msgstr "" #: ../../tutorial/errors.rst:65 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)." +"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`. رشته " -"ای که به عنوان نوع استثنا چاپ می شود، نام استثنای داخلی است که رخ داده است. این " -"موضوع برای تمام استثناهای داخلی صدق می کند، اما برای استثناهای تعریف شده توسط " -"کاربر لزوماً صحیح نیست (گرچه این یک قاعدهٔ مفید محسوب می‌شود). نام های استثنای " -"استاندارد شناسه های داخلی هستند (نه کلمات کلیدی رزرو شده)." +"عبارتند از :exc:`ZeroDivisionError`، :exc:`NameError` و :exc:`TypeError`. رشته ای " +"که به عنوان نوع استثنا چاپ می شود، نام استثنای داخلی است که رخ داده است. این موضوع " +"برای تمام استثناهای داخلی صدق می کند، اما برای استثناهای تعریف شده توسط کاربر لزوماً " +"صحیح نیست (گرچه این یک قاعدهٔ مفید محسوب می‌شود). نام های استثنای استاندارد شناسه های " +"داخلی هستند (نه کلمات کلیدی رزرو شده)." #: ../../tutorial/errors.rst:73 msgid "" -"The rest of the line provides detail based on the type of exception and what " -"caused it." +"The rest of the line provides detail based on the type of exception and what caused " +"it." msgstr "" "بخش باقی‌ماندهٔ خط، جزئیاتی را بسته به نوع استثنا «exception» و علت وقوع آن ارائه " "می‌دهد." @@ -179,9 +177,9 @@ msgid "" "standard input." msgstr "" "بخش قبلی پیام خطا، زمینه‌ای را نشان می‌دهد که در آن استثنا رخ داده است، به‌صورت یک " -"ردگیری پشته «stack traceback». به‌طور کلی، این بخش شامل ردگیری پشته‌ای است که " -"خطوطی از کد منبع را فهرست می‌کند؛ با این حال، خطوطی که از ورودی استاندارد " -"«standard input» خوانده شده‌اند در آن نمایش داده نمی‌شوند." +"ردگیری پشته «stack traceback». به‌طور کلی، این بخش شامل ردگیری پشته‌ای است که خطوطی " +"از کد منبع را فهرست می‌کند؛ با این حال، خطوطی که از ورودی استاندارد «standard input» " +"خوانده شده‌اند در آن نمایش داده نمی‌شوند." #: ../../tutorial/errors.rst:81 msgid ":ref:`bltin-exceptions` lists the built-in exceptions and their meanings." @@ -196,15 +194,15 @@ msgstr "مدیریت استثناها" 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. ::" +"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` مشخص می‌شود. ::" +"امکان نوشتن برنامه‌هایی وجود دارد که برخی از استثناها را مدیریت می‌کنند. به مثال زیر " +"نگاه کنید که از کاربر ورودی می‌خواهد تا زمانی که یک عدد صحیح معتبر وارد شود، اما به " +"کاربر اجازه می‌دهد برنامه را قطع کند (با فشردن :kbd:`Control-C` یا هر روشی که " +"سیستم‌عامل پشتیبانی می‌کند)؛ توجه داشته باشید که قطع برنامه توسط کاربر با ایجاد " +"استثنای :exc:`KeyboardInterrupt` مشخص می‌شود. ::" #: ../../tutorial/errors.rst:95 msgid "" @@ -246,15 +244,15 @@ msgstr "" #: ../../tutorial/errors.rst:111 msgid "" -"If an exception occurs during execution of the :keyword:`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 try/except block." +"If an exception occurs during execution of the :keyword:`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 try/except block." msgstr "" "اگر در طول اجرای بخش :keyword:`try` استثنایی رخ دهد، بقیه آن بخش نادیده گرفته " -"می‌شود. سپس، اگر نوع استثنا با استثنایی که بعد از کلیدواژه :keyword:`except` " -"آمده مطابقت داشته باشد، *بخش except* اجرا می‌شود و پس از آن اجرای برنامه بعد از " -"بلوک try/except ادامه می‌یابد." +"می‌شود. سپس، اگر نوع استثنا با استثنایی که بعد از کلیدواژه :keyword:`except` آمده " +"مطابقت داشته باشد، *بخش except* اجرا می‌شود و پس از آن اجرای برنامه بعد از بلوک try/" +"except ادامه می‌یابد." #: ../../tutorial/errors.rst:116 msgid "" @@ -262,25 +260,25 @@ msgid "" "clause*, it is passed on to outer :keyword:`try` statements; if no handler is " "found, it is an *unhandled exception* and execution stops with an error message." msgstr "" -"اگر استثنایی رخ دهد که با استثنای نام‌برده‌شده در *بند except* مطابقت نداشته " -"باشد، به دستورهای :keyword:`try` بیرونی منتقل می‌شود. اگر هیچ رسیدگی‌کننده‌ای " -"(handler) پیدا نشود، آن استثنا یک *استثنای رسیدگی‌نشده* (unhandled exception) " -"محسوب می‌شود و اجرای برنامه با نمایش یک پیام خطا متوقف خواهد شد." +"اگر استثنایی رخ دهد که با استثنای نام‌برده‌شده در *بند except* مطابقت نداشته باشد، به " +"دستورهای :keyword:`try` بیرونی منتقل می‌شود. اگر هیچ رسیدگی‌کننده‌ای (handler) پیدا " +"نشود، آن استثنا یک *استثنای رسیدگی‌نشده* (unhandled exception) محسوب می‌شود و اجرای " +"برنامه با نمایش یک پیام خطا متوقف خواهد شد." #: ../../tutorial/errors.rst:120 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, for example::" -msgstr "" -"یک دستور :keyword:`try` می‌تواند بیش از یک *بند except* داشته باشد تا برای " -"استثناهای مختلف رسیدگی‌کننده‌های متفاوتی تعریف شود. در هر بار وقوع استثنا، حداکثر " -"یکی از این رسیدگی‌کننده‌ها اجرا می‌شود. هر رسیدگی‌کننده فقط استثناهایی را مدیریت " -"می‌کند که در *بخش try* متناظر با آن رخ داده‌اند، نه استثناهایی که در سایر " -"رسیدگی‌کننده‌های همان دستور :keyword:`!try` ایجاد شوند. همچنین یک *بند except* " -"می‌تواند چندین استثنا را مشخص کند، برای مثال::" +"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, for example::" +msgstr "" +"یک دستور :keyword:`try` می‌تواند بیش از یک *بند except* داشته باشد تا برای استثناهای " +"مختلف رسیدگی‌کننده‌های متفاوتی تعریف شود. در هر بار وقوع استثنا، حداکثر یکی از این " +"رسیدگی‌کننده‌ها اجرا می‌شود. هر رسیدگی‌کننده فقط استثناهایی را مدیریت می‌کند که در *بخش " +"try* متناظر با آن رخ داده‌اند، نه استثناهایی که در سایر رسیدگی‌کننده‌های همان " +"دستور :keyword:`!try` ایجاد شوند. همچنین یک *بند except* می‌تواند چندین استثنا را " +"مشخص کند، برای مثال::" #: ../../tutorial/errors.rst:126 msgid "" @@ -292,16 +290,15 @@ msgstr "" #: ../../tutorial/errors.rst:129 msgid "" -"A class in an :keyword:`except` clause matches exceptions which are instances " -"of the class itself or one of its derived classes (but not the other way around " -"--- an *except clause* listing a derived class does not match instances of its " -"base classes). For example, the following code will print B, C, D in that " -"order::" +"A class in an :keyword:`except` clause matches exceptions which are instances of " +"the class itself or one of its derived classes (but not the other way around --- an " +"*except clause* listing a derived class does not match instances of its base " +"classes). For example, the following code will print B, C, D in that order::" msgstr "" -"کلاسی که در یک :keyword:`except` مشخص می‌شود، با استثناهایی مطابقت دارد که " -"نمونه‌ای از همان کلاس یا یکی از زیرکلاس‌های آن باشند (اما برعکس آن صادق نیست؛ " -"یعنی *بند except* که یک زیرکلاس را مشخص می‌کند، با نمونه‌های کلاس پایهٔ آن مطابقت " -"نخواهد داشت). برای مثال، کد زیر به‌ترتیب `B`، `C` و `D` را چاپ می‌کند::" +"کلاسی که در یک :keyword:`except` مشخص می‌شود، با استثناهایی مطابقت دارد که نمونه‌ای " +"از همان کلاس یا یکی از زیرکلاس‌های آن باشند (اما برعکس آن صادق نیست؛ یعنی *بند " +"except* که یک زیرکلاس را مشخص می‌کند، با نمونه‌های کلاس پایهٔ آن مطابقت نخواهد داشت). " +"برای مثال، کد زیر به‌ترتیب `B`، `C` و `D` را چاپ می‌کند::" #: ../../tutorial/errors.rst:134 msgid "" @@ -345,12 +342,12 @@ msgstr "" #: ../../tutorial/errors.rst:153 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." +"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* که با استثنا " -"مطابقت داشته باشد، اجرا می‌شود." +"توجه کنید که اگر ترتیب *بندهای except* برعکس بود (یعنی ``except B`` در ابتدا قرار " +"می‌گرفت)، خروجی `B`، `B`، `B` می‌شد؛ زیرا نخستین *بند except* که با استثنا مطابقت " +"داشته باشد، اجرا می‌شود." #: ../../tutorial/errors.rst:156 msgid "" @@ -358,23 +355,22 @@ msgid "" "exception's *arguments*. The presence and types of the arguments depend on the " "exception type." msgstr "" -"هنگامی که یک استثنا رخ می‌دهد، ممکن است مقادیر مرتبطی نیز همراه آن باشد که به " -"آن‌ها *آرگومان‌های* استثنا گفته می‌شود. وجود و نوع این آرگومان‌ها به نوع استثنا " -"بستگی دارد." +"هنگامی که یک استثنا رخ می‌دهد، ممکن است مقادیر مرتبطی نیز همراه آن باشد که به آن‌ها " +"*آرگومان‌های* استثنا گفته می‌شود. وجود و نوع این آرگومان‌ها به نوع استثنا بستگی دارد." #: ../../tutorial/errors.rst:160 msgid "" -"The *except clause* may specify a variable after the exception name. The " -"variable is bound to the exception instance which typically has an ``args`` " -"attribute that stores the arguments. For convenience, builtin exception types " +"The *except clause* may specify a variable after the exception name. The variable " +"is bound to the exception instance which typically has an ``args`` attribute that " +"stores the arguments. For convenience, builtin exception types " "define :meth:`~object.__str__` to print all the arguments without explicitly " "accessing ``.args``. ::" msgstr "" -"*بند except* می‌تواند پس از نام استثنا، یک متغیر نیز مشخص کند. این متغیر به " -"نمونهٔ استثنا (exception instance) نسبت داده می‌شود که معمولاً دارای ویژگی " -"``args`` برای ذخیرهٔ آرگومان‌های استثنا است. برای راحتی، انواع داخلی استثنا " -"متد :meth:`~object.__str__` را طوری تعریف کرده‌اند که بدون نیاز به دسترسی مستقیم " -"به ``.args``، همهٔ آرگومان‌ها را چاپ کند.::" +"*بند except* می‌تواند پس از نام استثنا، یک متغیر نیز مشخص کند. این متغیر به نمونهٔ " +"استثنا (exception instance) نسبت داده می‌شود که معمولاً دارای ویژگی ``args`` برای " +"ذخیرهٔ آرگومان‌های استثنا است. برای راحتی، انواع داخلی استثنا " +"متد :meth:`~object.__str__` را طوری تعریف کرده‌اند که بدون نیاز به دسترسی مستقیم به " +"``.args``، همهٔ آرگومان‌ها را چاپ کند.::" #: ../../tutorial/errors.rst:166 msgid "" @@ -423,12 +419,12 @@ msgstr "" #: ../../tutorial/errors.rst:186 msgid "" ":exc:`BaseException` is the common base class of all exceptions. One of its " -"subclasses, :exc:`Exception`, is the base class of all the non-fatal " -"exceptions. Exceptions which are not subclasses of :exc:`Exception` are not " -"typically handled, because they are used to indicate that the program should " -"terminate. They include :exc:`SystemExit` which is raised by :meth:`sys.exit` " -"and :exc:`KeyboardInterrupt` which is raised when a user wishes to interrupt " -"the program." +"subclasses, :exc:`Exception`, is the base class of all the non-fatal exceptions. " +"Exceptions which are not subclasses of :exc:`Exception` are not typically handled, " +"because they are used to indicate that the program should terminate. They " +"include :exc:`SystemExit` which is raised by :meth:`sys.exit` " +"and :exc:`KeyboardInterrupt` which is raised when a user wishes to interrupt the " +"program." msgstr "" ":exc:`BaseException` کلاس پایهٔ مشترک همهٔ استثناها است. یکی از زیرکلاس‌های آن، " "یعنی :exc:`Exception`، کلاس پایهٔ تمام استثناهای غیرمرگبار است. استثناهایی که " @@ -445,20 +441,19 @@ msgid "" "exceptions that we intend to handle, and to allow any unexpected exceptions to " "propagate on." msgstr "" -":exc:`Exception` را می‌توان به‌عنوان یک الگوی کلی (wildcard) برای گرفتن (تقریباً) " -"همهٔ استثناها به‌کار برد. با این حال، بهتر است تا حد امکان نوع استثناهایی را که " -"قصد مدیریت آن‌ها را داریم به‌طور دقیق مشخص کنیم و اجازه دهیم استثناهای غیرمنتظره " -"به سطوح بالاتر منتقل شوند." +":exc:`Exception` را می‌توان به‌عنوان یک الگوی کلی (wildcard) برای گرفتن (تقریباً) همهٔ " +"استثناها به‌کار برد. با این حال، بهتر است تا حد امکان نوع استثناهایی را که قصد " +"مدیریت آن‌ها را داریم به‌طور دقیق مشخص کنیم و اجازه دهیم استثناهای غیرمنتظره به سطوح " +"بالاتر منتقل شوند." #: ../../tutorial/errors.rst:199 msgid "" "The most common pattern for handling :exc:`Exception` is to print or log the " -"exception and then re-raise it (allowing a caller to handle the exception as " -"well)::" +"exception and then re-raise it (allowing a caller to handle the exception as well)::" msgstr "" -"رایج‌ترین الگوی مدیریت :exc:`Exception` این است که ابتدا استثنا چاپ یا ثبت (log) " -"شود و سپس دوباره ایجاد (re-raise) گردد تا فراخواننده نیز بتواند در صورت نیاز آن " -"را مدیریت کند::" +"رایج‌ترین الگوی مدیریت :exc:`Exception` این است که ابتدا استثنا چاپ یا ثبت (log) شود " +"و سپس دوباره ایجاد (re-raise) گردد تا فراخواننده نیز بتواند در صورت نیاز آن را " +"مدیریت کند::" #: ../../tutorial/errors.rst:203 msgid "" @@ -492,15 +487,13 @@ msgstr "" #: ../../tutorial/errors.rst:217 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::" +"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* هیچ استثنایی ایجاد نکرده باشد. برای " -"مثال::" +"صورت وجود، باید پس از همهٔ *بندهای except* قرار گیرد. این بند برای کدی مفید است که " +"تنها در صورتی باید اجرا شود که *بخش try* هیچ استثنایی ایجاد نکرده باشد. برای مثال::" #: ../../tutorial/errors.rst:222 msgid "" @@ -525,9 +518,9 @@ msgstr "" #: ../../tutorial/errors.rst:231 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." +"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:`!" @@ -535,13 +528,13 @@ msgstr "" #: ../../tutorial/errors.rst:236 msgid "" -"Exception handlers do not handle only exceptions that occur immediately in the " -"*try clause*, but also those that occur inside functions that are called (even " +"Exception handlers do not handle only exceptions that occur immediately in the *try " +"clause*, but also those that occur inside functions that are called (even " "indirectly) in the *try clause*. For example::" msgstr "" -"رسیدگی‌کننده‌های استثنا فقط استثناهایی را که مستقیماً در *بخش try* رخ می‌دهند " -"مدیریت نمی‌کنند، بلکه استثناهایی را که درون توابعی که (حتی به‌طور غیرمستقیم) از " -"*بخش try* فراخوانی شده‌اند نیز رخ می‌دهند، مدیریت می‌کنند. برای مثال::" +"رسیدگی‌کننده‌های استثنا فقط استثناهایی را که مستقیماً در *بخش try* رخ می‌دهند مدیریت " +"نمی‌کنند، بلکه استثناهایی را که درون توابعی که (حتی به‌طور غیرمستقیم) از *بخش try* " +"فراخوانی شده‌اند نیز رخ می‌دهند، مدیریت می‌کنند. برای مثال::" #: ../../tutorial/errors.rst:240 msgid "" @@ -571,8 +564,8 @@ msgstr "ایجاد استثناها" #: ../../tutorial/errors.rst:256 msgid "" -"The :keyword:`raise` statement allows the programmer to force a specified " -"exception to occur. For example::" +"The :keyword:`raise` statement allows the programmer to force a specified exception " +"to occur. For example::" msgstr "" "دستور :keyword:`raise` به برنامه‌نویس اجازه می‌دهد وقوع یک استثنای مشخص را به‌صورت " "اجباری ایجاد کند. برای مثال::" @@ -593,17 +586,17 @@ msgstr "" #: ../../tutorial/errors.rst:265 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:`BaseException`, such as :exc:`Exception` or one of its " -"subclasses). If an exception class is passed, it will be implicitly " -"instantiated by calling its constructor with no arguments::" +"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:`BaseException`, such as :exc:`Exception` or one of its subclasses). " +"If an exception class is passed, it will be implicitly instantiated by calling its " +"constructor with no arguments::" msgstr "" -"تنها آرگومان دستور :keyword:`raise` مشخص می‌کند که چه استثنایی باید ایجاد شود. " -"این آرگومان باید یا یک نمونهٔ استثنا (exception instance) باشد یا یک کلاس استثنا " -"(کلاسی که از :class:`BaseException` مشتق شده باشد، مانند :exc:`Exception` یا " -"یکی از زیرکلاس‌های آن). اگر یک کلاس استثنا ارسال شود، پایتون به‌طور ضمنی با " -"فراخوانی سازندهٔ آن بدون هیچ آرگومانی، یک نمونه از آن ایجاد می‌کند::" +"تنها آرگومان دستور :keyword:`raise` مشخص می‌کند که چه استثنایی باید ایجاد شود. این " +"آرگومان باید یا یک نمونهٔ استثنا (exception instance) باشد یا یک کلاس استثنا (کلاسی " +"که از :class:`BaseException` مشتق شده باشد، مانند :exc:`Exception` یا یکی از " +"زیرکلاس‌های آن). اگر یک کلاس استثنا ارسال شود، پایتون به‌طور ضمنی با فراخوانی سازندهٔ " +"آن بدون هیچ آرگومانی، یک نمونه از آن ایجاد می‌کند::" #: ../../tutorial/errors.rst:271 msgid "raise ValueError # shorthand for 'raise ValueError()'" @@ -611,13 +604,13 @@ msgstr "raise ValueError # shorthand for 'raise ValueError()'" #: ../../tutorial/errors.rst:273 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::" +"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` برای ایجاد مجدد " -"(re-raise) همان استثنا استفاده کنید::" +"اگر فقط لازم است تشخیص دهید که آیا استثنایی رخ داده است یا نه، اما قصد مدیریت آن را " +"ندارید، می‌توانید از شکل ساده‌تری از دستور :keyword:`raise` برای ایجاد مجدد (re-" +"raise) همان استثنا استفاده کنید::" #: ../../tutorial/errors.rst:277 msgid "" @@ -651,12 +644,11 @@ msgstr "زنجیره‌سازی استثناها" #: ../../tutorial/errors.rst:295 msgid "" -"If an unhandled exception occurs inside an :keyword:`except` section, it will " -"have the exception being handled attached to it and included in the error " -"message::" +"If an unhandled exception occurs inside an :keyword:`except` section, it will have " +"the exception being handled attached to it and included in the error message::" msgstr "" -"اگر درون یک بخش :keyword:`except` یک استثنای رسیدگی‌نشده رخ دهد، استثنایی که در " -"حال مدیریت شدن بود به آن متصل می‌شود و در پیام خطا نیز نمایش داده خواهد شد::" +"اگر درون یک بخش :keyword:`except` یک استثنای رسیدگی‌نشده رخ دهد، استثنایی که در حال " +"مدیریت شدن بود به آن متصل می‌شود و در پیام خطا نیز نمایش داده خواهد شد::" #: ../../tutorial/errors.rst:299 msgid "" @@ -699,12 +691,10 @@ msgstr "" #: ../../tutorial/errors.rst:317 msgid "" "To indicate that an exception is a direct consequence of another, " -"the :keyword:`raise` statement allows an optional :keyword:`from` " -"clause::" +"the :keyword:`raise` statement allows an optional :keyword:`from` clause::" msgstr "" "برای نشان دادن این که یک استثنا پیامد مستقیم استثنای دیگری است، " -"دستور :keyword:`raise` یک بند اختیاری :keyword:`from` را در اختیار " -"می‌گذارد::" +"دستور :keyword:`raise` یک بند اختیاری :keyword:`from` را در اختیار می‌گذارد::" #: ../../tutorial/errors.rst:320 msgid "" @@ -717,6 +707,8 @@ msgstr "" #: ../../tutorial/errors.rst:323 msgid "This can be useful when you are transforming exceptions. For example::" msgstr "" +"این قابلیت زمانی مفید است که در حال تبدیل یک استثنا به استثنای دیگری باشید. برای " +"مثال::" #: ../../tutorial/errors.rst:325 msgid "" @@ -769,6 +761,8 @@ msgid "" "It also allows disabling automatic exception chaining using the ``from None`` " "idiom::" msgstr "" +"همچنین می‌توانید با استفاده از الگوی ``from None`` زنجیره‌سازی خودکار استثناها را " +"غیرفعال کنید::" #: ../../tutorial/errors.rst:350 msgid "" @@ -793,44 +787,55 @@ msgstr "" "RuntimeError" #: ../../tutorial/errors.rst:360 -msgid "" -"For more information about chaining mechanics, see :ref:`bltin-exceptions`." +msgid "For more information about chaining mechanics, see :ref:`bltin-exceptions`." msgstr "" +"برای اطلاعات بیشتر دربارهٔ سازوکار زنجیره‌سازی استثناها، به :ref:`bltin-exceptions` " +"مراجعه کنید." #: ../../tutorial/errors.rst:366 msgid "User-defined Exceptions" -msgstr "" +msgstr "استثناهای تعریف شده توسط کاربر" #: ../../tutorial/errors.rst:368 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." +"typically be derived from the :exc:`Exception` class, either directly or indirectly." msgstr "" +"برنامه‌ها می‌توانند با ایجاد یک کلاس استثنای جدید، استثناهای اختصاصی خود را تعریف " +"کنند (برای آشنایی بیشتر با کلاس‌های پایتون، به :ref:`tut-classes` مراجعه کنید). " +"معمولاً استثناها باید، به‌صورت مستقیم یا غیرمستقیم، از کلاس :exc:`Exception` مشتق " +"شوند." #: ../../tutorial/errors.rst:372 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 " +"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." msgstr "" +"کلاس‌های استثنا می‌توانند هر کاری را انجام دهند که سایر کلاس‌ها قادر به انجام آن " +"هستند، اما معمولاً ساده نگه داشته می‌شوند و اغلب تنها چند ویژگی (attribute) در اختیار " +"می‌گذارند تا مدیریت‌کننده‌های استثنا بتوانند اطلاعات مربوط به خطا را از آن‌ها استخراج " +"کنند." #: ../../tutorial/errors.rst:376 msgid "" -"Most exceptions are defined with names that end in \"Error\", similar to the " -"naming of the standard exceptions." +"Most exceptions are defined with names that end in \"Error\", similar to the naming " +"of the standard exceptions." msgstr "" +"نام بیشتر استثناها به «Error» ختم می‌شود؛ مشابه شیوهٔ نام‌گذاری استثناهای استاندارد." #: ../../tutorial/errors.rst:379 msgid "" -"Many standard modules define their own exceptions to report errors that may " -"occur in functions they define." +"Many standard modules define their own exceptions to report errors that may occur " +"in functions they define." msgstr "" +"بسیاری از ماژول‌های استاندارد، استثناهای اختصاصی خود را برای گزارش خطاهایی که ممکن " +"است در توابعشان رخ دهد تعریف می‌کنند." #: ../../tutorial/errors.rst:386 msgid "Defining Clean-up Actions" -msgstr "" +msgstr "تعریف عملیات پاک‌سازی" #: ../../tutorial/errors.rst:388 msgid "" @@ -838,6 +843,8 @@ msgid "" "define clean-up actions that must be executed under all circumstances. For " "example::" msgstr "" +"دستور :keyword:`try` یک بخش اختیاری دیگر نیز دارد که برای تعریف عملیات پاک‌سازی‌ای در " +"نظر گرفته شده است که باید در هر شرایطی اجرا شوند. برای مثال::" #: ../../tutorial/errors.rst:392 msgid "" @@ -867,55 +874,78 @@ msgstr "" 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:" +"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:`!finally` " +"صرف‌نظر از اینکه بخش :keyword:`!try` استثنایی ایجاد کرده باشد یا نه، اجرا خواهد شد. " +"نکات زیر حالت‌های پیچیده‌تر هنگام وقوع استثنا را توضیح می‌دهند:" #: ../../tutorial/errors.rst:409 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 " +"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` دوباره پرتاب (re-raise) خواهد شد." #: ../../tutorial/errors.rst:415 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." +"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:419 msgid "" -"If the :keyword:`!finally` clause executes " -"a :keyword:`break`, :keyword:`continue` or :keyword:`return` statement, " -"exceptions are not re-raised. This can be confusing and is therefore " -"discouraged. From version 3.14 the compiler emits a :exc:`SyntaxWarning` for it " -"(see :pep:`765`)." +"If the :keyword:`!finally` clause executes a :keyword:`break`, :keyword:`continue` " +"or :keyword:`return` statement, exceptions are not re-raised. This can be confusing " +"and is therefore discouraged. From version 3.14 the compiler emits " +"a :exc:`SyntaxWarning` for it (see :pep:`765`)." msgstr "" +"اگر بخش :keyword:`!finally` شامل یکی از " +"دستورات :keyword:`break`، :keyword:`continue` یا :keyword:`return` باشد، استثناها " +"دوباره پرتاب نخواهند شد. این رفتار ممکن است باعث سردرگمی شود و به همین دلیل استفاده " +"از آن توصیه نمی‌شود. از نسخهٔ ۳٫۱۴، کامپایلر برای این حالت یک :exc:`SyntaxWarning` " +"صادر می‌کند (به :pep:`765` مراجعه کنید)." #: ../../tutorial/errors.rst:425 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." +"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:431 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. This can be confusing and is therefore discouraged. From " -"version 3.14 the compiler emits a :exc:`SyntaxWarning` for it (see :pep:`765`)." +"return` statement. This can be confusing and is therefore discouraged. From version " +"3.14 the compiler emits a :exc:`SyntaxWarning` for it (see :pep:`765`)." msgstr "" +"اگر بخش :keyword:`!finally` شامل یک دستور :keyword:`!return` باشد، مقدار بازگشتی " +"همان مقداری خواهد بود که در دستور :keyword:`!return` داخل بخش :keyword:`!finally` " +"مشخص شده است، نه مقداری که در دستور :keyword:`!return` داخل بخش :keyword:`!try` " +"تعیین شده بود. این رفتار ممکن است باعث سردرگمی شود و به همین دلیل استفاده از آن " +"توصیه نمی‌شود. از نسخهٔ ۳٫۱۴، کامپایلر برای این حالت یک :exc:`SyntaxWarning` صادر " +"می‌کند (به :pep:`765` مراجعه کنید)." #: ../../tutorial/errors.rst:439 msgid "For example::" -msgstr "" +msgstr "برای مثال::" #: ../../tutorial/errors.rst:441 msgid "" @@ -939,7 +969,7 @@ msgstr "" #: ../../tutorial/errors.rst:450 msgid "A more complicated example::" -msgstr "" +msgstr "یک مثال پیچیده‌تر::" #: ../../tutorial/errors.rst:452 msgid "" @@ -1001,28 +1031,39 @@ msgstr "" 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." +"the :keyword:`except` clause and therefore re-raised after the :keyword:`!finally` " +"clause has been executed." msgstr "" +"همان‌طور که می‌بینید، بخش :keyword:`finally` در هر صورت اجرا می‌شود. " +"استثنای :exc:`TypeError` که در اثر تقسیم دو رشته ایجاد شده است، توسط " +"بخش :keyword:`except` مدیریت نمی‌شود و بنابراین پس از اجرای بخش :keyword:`!finally` " +"دوباره پرتاب می‌شود." #: ../../tutorial/errors.rst:484 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." +"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:492 msgid "Predefined Clean-up Actions" -msgstr "" +msgstr "عملیات پاک‌سازی از پیش تعریف‌شده" #: ../../tutorial/errors.rst:494 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. ::" +"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:499 msgid "" @@ -1035,11 +1076,15 @@ msgstr "" #: ../../tutorial/errors.rst:502 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. ::" +"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:508 msgid "" @@ -1053,30 +1098,41 @@ msgstr "" #: ../../tutorial/errors.rst:512 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." +"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* همیشه بسته می‌شود، حتی اگر هنگام پردازش خطوط فایل " +"مشکلی رخ داده باشد. اشیایی که مانند فایل‌ها عملیات پاک‌سازی از پیش تعریف‌شده دارند، " +"این موضوع را در مستندات خود ذکر می‌کنند." #: ../../tutorial/errors.rst:520 msgid "Raising and Handling Multiple Unrelated Exceptions" -msgstr "" +msgstr "ایجاد و مدیریت چندین استثنای نامربوط به هم" #: ../../tutorial/errors.rst:522 msgid "" -"There are situations where it is necessary to report several exceptions that " -"have occurred. This is often the case in concurrency frameworks, when several " -"tasks may have failed in parallel, but there are also other use cases where it " -"is desirable to continue execution and collect multiple errors rather than " -"raise the first exception." +"There are situations where it is necessary to report several exceptions that have " +"occurred. This is often the case in concurrency frameworks, when several tasks may " +"have failed in parallel, but there are also other use cases where it is desirable " +"to continue execution and collect multiple errors rather than raise the first " +"exception." msgstr "" +"گاهی لازم است چندین استثنا که رخ داده‌اند به‌طور هم‌زمان گزارش شوند. این وضعیت معمولاً " +"در چارچوب‌های هم‌روندی (concurrency) پیش می‌آید؛ جایی که ممکن است چندین وظیفه به‌طور " +"موازی شکست بخورند. البته موارد دیگری نیز وجود دارد که در آن‌ها ترجیح داده می‌شود " +"اجرای برنامه ادامه پیدا کند و چندین خطا جمع‌آوری شوند، به‌جای اینکه با اولین استثنا " +"متوقف شود." #: ../../tutorial/errors.rst:528 msgid "" -"The builtin :exc:`ExceptionGroup` wraps a list of exception instances so that " -"they can be raised together. It is an exception itself, so it can be caught " -"like any other exception. ::" +"The builtin :exc:`ExceptionGroup` wraps a list of exception instances so that they " +"can be raised together. It is an exception itself, so it can be caught like any " +"other exception. ::" msgstr "" +"استثنای داخلی :exc:`ExceptionGroup` فهرستی از نمونه‌های استثنا را در خود نگه می‌دارد " +"تا بتوان آن‌ها را به‌صورت گروهی پرتاب کرد. خود این کلاس نیز یک استثنا است، بنابراین " +"مانند هر استثنای دیگری قابل مدیریت (catch) است.::" #: ../../tutorial/errors.rst:532 msgid "" @@ -1133,11 +1189,16 @@ msgstr "" #: ../../tutorial/errors.rst:557 msgid "" "By using ``except*`` instead of ``except``, we can selectively handle only the " -"exceptions in the group that match a certain type. In the following example, " -"which shows a nested exception group, each ``except*`` clause extracts from the " -"group exceptions of a certain type while letting all other exceptions propagate " -"to other clauses and eventually to be reraised. ::" +"exceptions in the group that match a certain type. In the following example, which " +"shows a nested exception group, each ``except*`` clause extracts from the group " +"exceptions of a certain type while letting all other exceptions propagate to other " +"clauses and eventually to be reraised. ::" msgstr "" +"با استفاده از ``except*`` به‌جای ``except``، می‌توان فقط استثناهای موجود در گروه را " +"که با یک نوع مشخص مطابقت دارند، به‌صورت انتخابی مدیریت کرد. در مثال زیر که یک گروه " +"استثنای تو‌در‌تو را نشان می‌دهد، هر بخش ``except*`` استثناهای هم‌نوع را از گروه استخراج " +"می‌کند و سایر استثناها را برای رسیدگی توسط بخش‌های دیگر عبور می‌دهد تا در نهایت دوباره " +"پرتاب شوند.::" #: ../../tutorial/errors.rst:564 msgid "" @@ -1225,11 +1286,13 @@ msgstr "" #: ../../tutorial/errors.rst:605 msgid "" -"Note that the exceptions nested in an exception group must be instances, not " -"types. This is because in practice the exceptions would typically be ones that " -"have already been raised and caught by the program, along the following " -"pattern::" +"Note that the exceptions nested in an exception group must be instances, not types. " +"This is because in practice the exceptions would typically be ones that have " +"already been raised and caught by the program, along the following pattern::" msgstr "" +"توجه داشته باشید که استثناهای موجود در یک گروه استثنا باید نمونه (instance) باشند، " +"نه خود کلاس‌های استثنا. دلیلش این است که در عمل، این استثناها معمولاً قبلاً توسط " +"برنامه پرتاب و سپس مدیریت شده‌اند؛ مطابق الگویی مشابه زیر::" #: ../../tutorial/errors.rst:610 msgid "" @@ -1257,17 +1320,23 @@ msgstr "" #: ../../tutorial/errors.rst:625 msgid "Enriching Exceptions with Notes" -msgstr "" +msgstr "افزودن یادداشت به استثناها" #: ../../tutorial/errors.rst:627 msgid "" -"When an exception is created in order to be raised, it is usually initialized " -"with information that describes the error that has occurred. There are cases " -"where it is useful to add information after the exception was caught. For this " -"purpose, exceptions have a method ``add_note(note)`` that accepts a string and " -"adds it to the exception's notes list. The standard traceback rendering " -"includes all notes, in the order they were added, after the exception. ::" +"When an exception is created in order to be raised, it is usually initialized with " +"information that describes the error that has occurred. There are cases where it is " +"useful to add information after the exception was caught. For this purpose, " +"exceptions have a method ``add_note(note)`` that accepts a string and adds it to " +"the exception's notes list. The standard traceback rendering includes all notes, in " +"the order they were added, after the exception. ::" msgstr "" +"وقتی یک استثنا برای پرتاب شدن ایجاد می‌شود، معمولاً با اطلاعاتی مقداردهی اولیه می‌شود " +"که خطای رخ‌داده را توصیف می‌کنند. بااین‌حال، گاهی مفید است که پس از مدیریت (catch) شدن " +"استثنا نیز اطلاعات بیشتری به آن افزوده شود. برای این منظور، استثناها متدی به نام " +"``add_note(note)`` دارند که یک رشته را دریافت کرده و آن را به فهرست یادداشت‌های " +"استثنا اضافه می‌کند. نمایش استاندارد traceback همهٔ این یادداشت‌ها را، به همان ترتیبی " +"که اضافه شده‌اند، پس از اطلاعات استثنا نمایش می‌دهد.::" #: ../../tutorial/errors.rst:634 msgid "" @@ -1303,10 +1372,13 @@ msgstr "" #: ../../tutorial/errors.rst:649 msgid "" -"For example, when collecting exceptions into an exception group, we may want to " -"add context information for the individual errors. In the following each " -"exception in the group has a note indicating when this error has occurred. ::" +"For example, when collecting exceptions into an exception group, we may want to add " +"context information for the individual errors. In the following each exception in " +"the group has a note indicating when this error has occurred. ::" msgstr "" +"برای مثال، هنگام جمع‌آوری چند استثنا در یک گروه استثنا، ممکن است بخواهیم اطلاعات " +"زمینه‌ای (context) را به هر خطا اضافه کنیم. در مثال زیر، هر استثنای موجود در گروه " +"یادداشتی دارد که مشخص می‌کند آن خطا در چه زمانی رخ داده است.::" #: ../../tutorial/errors.rst:653 msgid ""