π ΠΠ°ΠΊ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΠΈΠΏ ΠΎΡΠΈΠ±ΠΊΠΈ Π² Python? π
Π§ΡΠΎΠ±Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΠΈΠΏ ΠΎΡΠΈΠ±ΠΊΠΈ Π² Python, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ type()
. ΠΠ½Π° Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΈΠΏ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, Π²ΠΊΠ»ΡΡΠ°Ρ ΠΎΡΠΈΠ±ΠΊΠΈ.
# ΠΡΠΈΠΌΠ΅Ρ
def divide(a, b):
try:
result = a / b
except Exception as e:
error_type = type(e).__name__
print(f"Π’ΠΈΠΏ ΠΎΡΠΈΠ±ΠΊΠΈ: {error_type}")
divide(10, 0)
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅, Π΅ΡΠ»ΠΈ Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° Π½ΠΎΠ»Ρ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ, ΡΡΠ½ΠΊΡΠΈΡ ΠΏΠΎΠΉΠΌΠ°Π΅Ρ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ZeroDivisionError
. ΠΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ type()
, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠΈΠΏ ΡΡΠΎΠΉ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΈ Π²ΡΠ²ΠΎΠ΄ΠΈΠΌ Π΅Π³ΠΎ Π½Π° ΡΠΊΡΠ°Π½.
ΠΠ΅ΡΠ°Π»ΡΠ½ΡΠΉ ΠΎΡΠ²Π΅Ρ
ΠΠ°ΠΊ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΠΈΠΏ ΠΎΡΠΈΠ±ΠΊΠΈ Π² Python
Π Python, ΠΎΡΠΈΠ±ΠΊΠΈ ΠΌΠΎΠ³ΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΠ»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠΈΠΏΠ° Π²ΠΎΠ·Π½ΠΈΠΊΡΠ΅ΠΉ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΈ Π΅Π΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ, ΡΡΡΠ΅ΡΡΠ²ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΎΠ². Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠΈΠΏΠ° ΠΎΡΠΈΠ±ΠΊΠΈ Π² Python ΠΈ ΠΏΡΠΈΠ²Π΅Π΄Π΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΊΠΎΠ΄Π°.
ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠΈΠΏΠ° ΠΎΡΠΈΠ±ΠΊΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ try-except
ΠΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ try-except Π² Python ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΡΠ²Π°ΡΡ ΠΈ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΠ½Π° ΠΈΠΌΠ΅Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ:
try:
# ΠΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ·Π²Π°ΡΡ ΠΎΡΠΈΠ±ΠΊΡ
except <ΡΠΈΠΏ_ΠΎΡΠΈΠ±ΠΊΠΈ>:
# ΠΠΎΠ΄ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΎΡΠΈΠ±ΠΊΠΈ
Π§ΡΠΎΠ±Ρ ΡΠ·Π½Π°ΡΡ ΡΠΈΠΏ ΠΎΡΠΈΠ±ΠΊΠΈ, Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΡΠΈΠΏ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΏΠΎΡΠ»Π΅ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π° "except". ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΎΠ±Ρ ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΠΈΡΡ ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΎΡΠΈΠ±ΠΊΡ ΡΠΈΠΏΠ° ZeroDivisionError, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄:
try:
result = 1 / 0
except ZeroDivisionError:
print("ΠΡΠΈΠ±ΠΊΠ° Π΄Π΅Π»Π΅Π½ΠΈΡ Π½Π° Π½ΠΎΠ»Ρ")
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅, Π΅ΡΠ»ΠΈ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΎΡΠΈΠ±ΠΊΠ° Π΄Π΅Π»Π΅Π½ΠΈΡ Π½Π° Π½ΠΎΠ»Ρ, ΠΌΡ ΠΏΠΎΠΏΠ°Π΄Π°Π΅ΠΌ Π² Π±Π»ΠΎΠΊ except ΠΈ Π²ΡΠ²ΠΎΠ΄ΠΈΠΌ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅.
ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠΈΠΏΠ° ΠΎΡΠΈΠ±ΠΊΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ sys.exc_info()
ΠΠΎΠ΄ΡΠ»Ρ sys Π² Python ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΡ exc_info(), ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ Π²ΠΎΠ·Π½ΠΈΠΊΡΠ΅ΠΉ ΠΎΡΠΈΠ±ΠΊΠ΅. ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠΈΠΏΠ° ΠΎΡΠΈΠ±ΠΊΠΈ. ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ΄Π°:
import sys
try:
result = 1 / 0
except:
exc_type, exc_value, exc_traceback = sys.exc_info()
print("Π’ΠΈΠΏ ΠΎΡΠΈΠ±ΠΊΠΈ:", exc_type.__name__)
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ ΠΎΠ±ΡΠΈΠΉ Π±Π»ΠΎΠΊ except Π±Π΅Π· ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΡΠΈΠΏΠ° ΠΎΡΠΈΠ±ΠΊΠΈ. Π€ΡΠ½ΠΊΡΠΈΡ sys.exc_info() Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΊΠΎΡΡΠ΅ΠΆ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΈΠΏ ΠΎΡΠΈΠ±ΠΊΠΈ. ΠΡ Π²ΡΠ²ΠΎΠ΄ΠΈΠΌ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠΌΡ ΡΠΈΠΏΠ° ΠΎΡΠΈΠ±ΠΊΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° __name__.
ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠΈΠΏΠ° ΠΎΡΠΈΠ±ΠΊΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ isinstance()
Π€ΡΠ½ΠΊΡΠΈΡ isinstance() ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ½ΠΎΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΊ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌΡ ΠΊΠ»Π°ΡΡΡ. ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠΈΠΏΠ° ΠΎΡΠΈΠ±ΠΊΠΈ. ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ΄Π°:
try:
result = 1 / 0
except Exception as e:
if isinstance(e, ZeroDivisionError):
print("ΠΡΠΈΠ±ΠΊΠ° Π΄Π΅Π»Π΅Π½ΠΈΡ Π½Π° Π½ΠΎΠ»Ρ")
else:
print("ΠΡΡΠ³Π°Ρ ΠΎΡΠΈΠ±ΠΊΠ°:", type(e).__name__)
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅, ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΎΠ±ΡΠΈΠΉ Π±Π»ΠΎΠΊ except Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ "as e", ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ. ΠΠ°ΡΠ΅ΠΌ ΠΌΡ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ isinstance(), ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ Π»ΠΈ ΠΎΡΠΈΠ±ΠΊΠ° ΠΊ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌΡ ΠΊΠ»Π°ΡΡΡ, Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ZeroDivisionError, ΠΈ Π²ΡΠ²ΠΎΠ΄ΠΈΠΌ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅. ΠΡΠ»ΠΈ ΠΎΡΠΈΠ±ΠΊΠ° Π½Π΅ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡ ΠΊΠ»Π°ΡΡΡ, ΠΌΡ Π²ΡΠ²ΠΎΠ΄ΠΈΠΌ ΠΈΠΌΡ ΡΠΈΠΏΠ° ΠΎΡΠΈΠ±ΠΊΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° __name__.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠΈΠΏΠ° ΠΎΡΠΈΠ±ΠΊΠΈ Π² Python. ΠΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ try-except ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π»ΠΎΠ²ΠΈΡΡ ΠΈ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ, ΡΠΊΠ°Π·ΡΠ²Π°Ρ ΡΠΈΠΏ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΏΠΎΡΠ»Π΅ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π° except. ΠΠΎΠ΄ΡΠ»Ρ sys ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΡ exc_info(), ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ Π²ΠΎΠ·Π½ΠΈΠΊΡΠ΅ΠΉ ΠΎΡΠΈΠ±ΠΊΠ΅, Π²ΠΊΠ»ΡΡΠ°Ρ ΡΠΈΠΏ ΠΎΡΠΈΠ±ΠΊΠΈ. Π€ΡΠ½ΠΊΡΠΈΡ isinstance() ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ½ΠΎΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΊ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌΡ ΠΊΠ»Π°ΡΡΡ. ΠΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· ΡΡΠΈΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΎΠ² ΠΈΠΌΠ΅Π΅Ρ ΡΠ²ΠΎΠΈ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ ΠΈ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ ΡΠΈΡΡΠ°ΡΠΈΠΈ.