முக்கிய உள்ளடக்கத்திற்குச் செல்லவும்
தொகுதி 2 · பாடம் 4 இன் 4பாடத்திட்டத்தில் 8/36~12 min
தொகுதி பாடங்கள் (4/4)

கையாளுவதில் பிழை: முயற்சி/தவிர

இயக்க நேரத்தில் ஏதேனும் தவறு நடந்தால் (பூஜ்ஜியத்தால் வகுத்தல், விடுபட்ட விசை, ஒரு பொருந்தாத வகைகளில் செயல்பாடு) பைதான் ஒரு விதிவிலக்கு எழுப்புகிறது. இல்லாமல் கையாளுதல், விதிவிலக்கு நிரலை குறுக்கிடுகிறது. try / except உடன் நீங்கள் அதைப் பிடித்து என்ன செய்வது என்று முடிவு செய்யலாம்.

அடிப்படை வடிவம்

Python
try:
    risultato = 10 / 0
except ZeroDivisionError:
    risultato = None
risultato  # None
  • try: தொகுதியில் தோல்வியடையும் குறியீடு உள்ளது;
  • அந்த பிழை வகை உயர்த்தப்பட்டால் மட்டுமே except <ErrorType>: செயல்படுத்தப்படும் try உள்ளே.

விதிவிலக்கு செய்தியைப் பிடிக்கிறது

விதிவிலக்கு பொருளை பெயருடன் இணைக்க as ஐப் பயன்படுத்தவும்:

Python
try:
    int("non è un numero")
except ValueError as e:
    messaggio = str(e)
messaggio  # "invalid literal for int() with base 10: 'non è un numero'"

ஒன்றாக பல வகைகள்

Python
try:
    valore = dati[chiave]
except (KeyError, IndexError):
    valore = None

அந்த வகைகளில் (அல்லது துணைப்பிரிவுகள்) ஏதேனும் விதிவிலக்கைப் பிடிக்கும் பல வகைகள்.

முழு அமைப்பு: முயற்சி / தவிர / வேறு / இறுதியாக

Python
try:
    n = int("42")
except ValueError:
    print("not a number")
else:
    print(f"parsed: {n}")     # executed only if NO exception occurred
finally:
    print("always executed")  # executed regardless, even on exception
  • else — try இன் வெற்றியைப் பொறுத்துக் குறியீட்டைப் பயன்படுத்தவும். வைத்துக்கொள்ளுங்கள் நீங்கள் தற்செயலாக தொடர்பில்லாத விதிவிலக்குகளைப் பிடிக்க மாட்டீர்கள்.
  • finally — எப்போதும் நிகழ வேண்டிய சுத்தம் (ஒரு கோப்பை மூடுதல், வெளியிடுதல் வளம்). வெற்றியிலும் பிழையிலும் செயல்படுத்தப்பட்டது.

விதிவிலக்கு எழுப்புகிறது: raise

சில சமயங்களில் ஏதோ தவறு நடந்துவிட்டது என்று அடையாளம் காட்ட விரும்புபவர் நீங்கள்:

Python
def diviso(a, b):
    if b == 0:
        raise ValueError("the divisor cannot be zero")
    return a / b

நீங்கள் சந்திக்கும் மற்றும் எழுப்பும் மிகவும் பொதுவான உள்ளமைக்கப்பட்ட விதிவிலக்குகள்:

  • ValueError — மதிப்பு சரியான வகையைக் கொண்டுள்ளது, ஆனால் ஏற்றுக்கொள்ள முடியாதது (எ.கா. பாகுபடுத்துதல்).
  • TypeError — வகை தவறு (எ.கா. len(42)).
  • KeyError / IndexError — விசை/குறியீடு இல்லை.
  • ZeroDivisionError — பூஜ்ஜியத்தால் வகுத்தல்.
  • FileNotFoundError, PermissionError — கோப்பு முறைமை செயல்பாடுகள்.

முயற்சி தொகுதிகளில் மற்ற மற்றும் இறுதியாக உட்பிரிவுகள்

ஒரு try தொகுதி இரண்டு கூடுதல் உட்பிரிவுகளை வரையறுக்கலாம்:

  • else: விதிவிலக்குகள் எதுவும் இல்லாமல் try தொகுதி முடிந்தால் மட்டுமே செயல்படுத்தப்படும்.
  • finally: விதிவிலக்கு ஏற்பட்டதா என்பதைப் பொருட்படுத்தாமல் எப்போதும் செயல்படுத்தப்படும். ஆதாரங்களை சுத்தம் செய்வதற்கு இது சிறந்தது (எ.கா. திறந்த கோப்பு அல்லது தரவுத்தள இணைப்பை மூடுவது).

நீங்களே முயற்சி செய்து பாருங்கள்

உடற்பயிற்சி#python.m2.l4.e1
முயற்சிகள்: 0ஏற்றுகிறது…

int('abc') முயற்சிக்கும் ஒரு வெளிப்பாட்டை எழுதவும்: ValueError உயர்த்தப்பட்டால், 'errore' என்ற சரத்தை `result`க்கு ஒதுக்கவும்; இல்லையெனில் எண்ணை ஒதுக்குங்கள். `முடிவை` மதிப்பிடவும்.

எடிட்டரை ஏற்றுகிறது…
குறிப்பைக் காட்டு

int('abc') ValueError ஐ உயர்த்துகிறது.

3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்

மதிப்பாய்வு பயிற்சி

உடற்பயிற்சி#python.m2.l4.e2
முயற்சிகள்: 0ஏற்றுகிறது…

`டிவைடு(a, b)` என்பதை வரையறுத்து, a/b ஐத் தருகிறது, ஆனால் b 0 ஆக இருந்தால் 'வகுப்பு பூஜ்ஜியம்' என்ற செய்தியுடன் மதிப்புப் பிழையை உயர்த்துகிறது. பிறகு ஒரு முயற்சியில்/தவிர வகுப்பிற்குள் (10, 0) அழைக்கவும் மற்றும் பிடிபட்ட விதிவிலக்கின் சரத்தை `செய்தி` அனுப்பவும்.

எடிட்டரை ஏற்றுகிறது…
குறிப்பைக் காட்டு

செயல்பாட்டின் உள்ளே ValueError('...') ஐ உயர்த்தவும்; e என ValueError தவிர பிடிக்கவும்.

3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்

கூடுதல் சவால்

உடற்பயிற்சி#python.m2.l4.e3
முயற்சிகள்: 0ஏற்றுகிறது…

\`text_val = "abc"\` சரத்தை முழு எண்ணாக மாற்ற \`try-except\` block ஐ எழுதவும். மாற்றமானது \`மதிப்புப் பிழை\`யை உயர்த்தினால், \`முடிவு\`க்கு \`ஒன்றுமில்லை\` என்பதை ஒதுக்கவும். இல்லையெனில், மாற்றப்பட்ட எண்ணை ஒதுக்கவும். இறுதியாக, \`முடிவை\` மதிப்பிடவும்.

எடிட்டரை ஏற்றுகிறது…
குறிப்பைக் காட்டு

முயற்சி: முடிவு = int(text_val) ஐப் பயன்படுத்தவும், மதிப்புப் பிழையைத் தவிர: முடிவு = எதுவுமில்லை.

3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்