Skip to content

Commit 08d24ff

Browse files
author
Saeid
committed
add raise
1 parent 49624db commit 08d24ff

3 files changed

Lines changed: 59 additions & 2 deletions

File tree

_static/pages/24-python--raise-exception-warning-assertion.jpg renamed to _static/pages/24-python-raise-exception-warning-assertion.jpg

File renamed without changes.

lessons/l23.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -695,7 +695,7 @@
695695
Exception Hierarchy
696696
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
697697

698-
در زبان برنامه‌نویسی پایتون تمامی Exceptionهای از پیش آماده در قالب کلاس‌هایی در یک سلسله مراتب از وراثت ارايه شده است. برای مشاهده این کلاس‌ها و ساختار وراثت آن‌ها می‌توانید به اسناد پایتون مراجعه نمایید:‌ `Exception hierarchy <https://docs.python.org/3/library/exceptions.html#exception-hierarchy/>`__ - این ساختار توسط تصویر پایین نمایش داده شده است:
698+
در زبان برنامه‌نویسی پایتون تمامی Exceptionهای از پیش آماده در قالب کلاس‌هایی در یک سلسله مراتب از وراثت ارايه شده است. برای مشاهده این کلاس‌ها و ساختار وراثت آن‌ها می‌توانید به اسناد پایتون مراجعه نمایید:‌ `Exception hierarchy <https://docs.python.org/3/library/exceptions.html#exception-hierarchy>`__ - این ساختار توسط تصویر پایین نمایش داده شده است:
699699

700700

701701
.. image:: /_static/l23-python-exception-hierarchy.png

lessons/l24.rst

Lines changed: 58 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
درس ۲۴: مدیریت خطا در پایتون: Warning ،raise Exception و Assertion
99
===================================================================================================
1010

11-
.. figure:: /_static/pages/24-python--raise-exception-warning-assertion.jpg
11+
.. figure:: /_static/pages/24-python-raise-exception-warning-assertion.jpg
1212
:align: center
1313
:alt: مدیریت خطا در پایتون:Warning ،raise Exception و Assertion
1414

@@ -36,6 +36,63 @@
3636
دستور ``raise``
3737
~~~~~~~~~~~~~~~~~~~~~~~~~~~
3838

39+
از درس پیش با Exception آشنا شدیم و مشاهده کردیم در زمان اجرای برنامه پایتونی تمامی خطاها در قالب یک Exception اعلام می‌گردند. اما در برنامه‌نویسی زمان‌های بسیاری خواهد بود که برنامه‌نویس می‌بایست خود اقدام به بروز Exception نماید. یک ماژول در هنگام انجام کار مشخصی ممکن است با وضعیت‌های مختلفی روبرو گردد که می‌بایست این وضعیت‌ها را به ماژول سطح بالاتر خود اعلام کند تا در نهایت نتیجه و توضیح مناسب برای کاربر فراهم گردد. برای مثال در پیاده‌سازی API ماژولی که انجام خدمت را به عهده دارد، هنگامی که به خطا یا وضعیتی خاص برخورد می‌کند، می‌تواند این وضعیت را در قالب بروز یک Exception اعلام می‌کند و ماژولی که وظیفه تولید پاسخ یا Response را برعهده دارد، بر اساس نوع Exception رخ داده می‌تواند یک Response مناسب تولید نماید.
40+
41+
در زبان برنامه‌نویسی پایتون از دستور ``raise`` [`اسناد پایتون <https://docs.python.org/3/reference/simple_stmts.html#raise>`__] برای بروز یک Exception استفاده می‌گردد::
42+
43+
raise Exception() # an exception object
44+
45+
46+
.. code-block:: python
47+
:linenos:
48+
49+
def self_sum_int(a):
50+
if not isinstance(a, int):
51+
raise TypeError()
52+
53+
return a + a
54+
55+
res = self_sum_int('C')
56+
print(res)
57+
58+
59+
::
60+
61+
Traceback (most recent call last):
62+
File "sample.py", line 7, in <module>
63+
res = self_sum_int('C')
64+
File "sample.py", line 3, in self_sum_int
65+
raise TypeError()
66+
TypeError
67+
68+
در نمونه کد بالا ما یک شی از کلاس ``TypeError`` ایجاد و آن را raise کردیم (سطر ۳). همانطور که مشاهده می‌کنید، شرح Exception در Traceback (سطر پایانی) با آن چیزی که در درس پیش شاهد آن بودیم، متفاوت است و همچنین علت بروز Exception نیز raise شدن آن اعلام شده است.
69+
70+
می‌توان در هنگام نمونه‌سازی از کلاس Exception مورد نظر، یک متن دلخواه (یک شی از نوع ``str``) به عنوان شرح Exception در زمان نمونه‌سازی به صورت آرگومان ارسال کنیم:
71+
72+
73+
.. code-block:: python
74+
:linenos:
75+
76+
def self_sum_int(a):
77+
if not isinstance(a, int):
78+
raise TypeError(f"The input must be 'int' type, {a!r} is {type(a)}")
79+
80+
return a + a
81+
82+
res = self_sum_int('C')
83+
print(res)
84+
85+
86+
::
87+
88+
Traceback (most recent call last):
89+
File "sample.py", line 7, in <module>
90+
res = self_sum_int('C')
91+
File "sample.py", line 3, in self_sum_int
92+
raise TypeError(f'The input must be of the integer type, {a} is {type(a)}')
93+
TypeError: The input must be 'int' type, 'C' is <class 'str'>
94+
95+
3996

4097
ایجاد Exception
4198
~~~~~~~~~~~~~~~~~~~~~~~~~~~

0 commit comments

Comments
 (0)