Python - Try Except
try தொகுதி
செயல்பாடு: பிழைகளுக்கான குறியீட்டுத் தொகுதியைச் சோதிக்கிறது
கட்டமைப்பு: try:
except தொகுதி
செயல்பாடு: பிழையைக் கையாளுகிறது
கட்டமைப்பு: except:
else தொகுதி
செயல்பாடு: பிழை இல்லாதபோது குறியீட்டை செயல்படுத்துகிறது
கட்டமைப்பு: else:
finally தொகுதி
செயல்பாடு: முடிவைப் பொருட்படுத்தாமல் குறியீட்டை செயல்படுத்துகிறது
கட்டமைப்பு: finally:
விதிவிலக்கு கையாளுதல்
ஒரு பிழை ஏற்படும் போது, அல்லது விதிவிலக்கு என்று நாம் அழைக்கும் போது, Python பொதுவாக நிறுத்தி ஒரு பிழை செய்தியை உருவாக்கும்.
இந்த விதிவிலக்குகள் try கூற்றைப் பயன்படுத்தி கையாளப்படலாம்:
உதவிக்குறிப்பு:
try தொகுதி ஒரு பிழையை உயர்த்துவதால், except தொகுதி செயல்படுத்தப்படும்.
விதிவிலக்கு கையாளுதல் இல்லாமல்
# இந்த கூற்று ஒரு பிழையை உயர்த்தும்
print(x) # x வரையறுக்கப்படவில்லை
# நிரல் செயல்படுவது நிறுத்தப்படும்
print("This line won't execute")
முடிவு: NameError, நிரல் செயலிழக்கும்
பயனர் அனுபவம்: மோசமானது
விதிவிலக்கு கையாளுதலுடன்
try:
print(x) # x வரையறுக்கப்படவில்லை
except:
print("An exception occurred")
print("Program continues normally")
முடிவு: "An exception occurred", நிரல் தொடர்கிறது
பயனர் அனுபவம்: நல்லது
அடிப்படை Try Except
எடுத்துக்காட்டு
try தொகுதி ஒரு விதிவிலக்கை உருவாக்கும், ஏனெனில் x வரையறுக்கப்படவில்லை:
try:
print(x) # x வரையறுக்கப்படவில்லை
except:
print("An exception occurred")
# நிரல் தொடர்கிறது
print("Program execution continues...")
இயக்க ஓட்டம்:
படி 1: try தொகுதி தொடங்குகிறது
படி 2: print(x) செயல்படுத்தப்படுகிறது → NameError
படி 3: except தொகுதிக்கு கட்டுப்பாடு மாற்றப்படுகிறது
படி 4: print("An exception occurred") செயல்படுத்தப்படுகிறது
படி 5: try-except தொகுதிக்கு பிறகு நிரல் தொடர்கிறது
வெளியீடு:
An exception occurred
Program execution continues...
பல விதிவிலக்குகள்
ஒரு சிறப்பு வகை பிழைக்கு ஒரு சிறப்பு குறியீட்டுத் தொகுதியை செயல்படுத்த விரும்பினால், நீங்கள் விரும்பும் அளவுக்கு பல விதிவிலக்குத் தொகுதிகளை வரையறுக்கலாம்:
எடுத்துக்காட்டு
try தொகுதி ஒரு NameError ஐ உயர்த்தினால் ஒரு செய்தியையும், மற்ற பிழைகளுக்கு மற்றொன்றையும் அச்சிடுக:
try:
print(x) # x வரையறுக்கப்படவில்லை
except NameError:
print("Variable x is not defined")
except:
print("Something else went wrong")
குறிப்பு:
எங்கள் Python உள்ளமைக்கப்பட்ட விதிவிலக்குகள் குறிப்பில் மேலும் பிழை வகைகளைப் பார்க்கவும்.
குறிப்பிட்ட பிழை வகைகள்
try:
result = 10 / 0
except ZeroDivisionError:
print("Cannot divide by zero!")
except TypeError:
print("Type error occurred!")
except Exception as e:
print(f"Other error: {e}")
பொதுவான Python பிழைகள்
NameError- மாறி வரையறுக்கப்படவில்லைTypeError- தவறான தரவு வகைValueError- தவறான மதிப்புZeroDivisionError- பூஜ்ஜியத்தால் வகுத்தல்IndexError- அடைவெண் வரம்பிற்கு வெளியேKeyError- சொற்களஞ்சிய விசை இல்லைFileNotFoundError- கோப்பு கிடைக்கவில்லை
else தொகுதி
எந்த பிழையும் உயர்த்தப்படாவிட்டால் செயல்படுத்தப்பட வேண்டிய குறியீட்டுத் தொகுதியை வரையறுக்க else முக்கியச்சொல்லைப் பயன்படுத்தலாம்:
எடுத்துக்காட்டு
இந்த எடுத்துக்காட்டில், try தொகுதி எந்த பிழையையும் உருவாக்காது:
try:
print("Hello, World!")
except:
print("Something went wrong")
else:
print("Nothing went wrong - else block executed")
else தொகுதியின் நோக்கம்:
நிபந்தனை: எந்த except தொகுதியும் செயல்படுத்தப்படாவிட்டால் மட்டுமே
பயன்பாடு: வெற்றிகரமான செயல்பாட்டிற்கான குறியீடு
நன்மை: try தொகுதியிலிருந்து வெற்றிகரமான குறியீட்டைப் பிரிக்கிறது
எடுத்துக்காட்டு: கோப்பு வெற்றிகரமாகப் படிக்கப்பட்ட பிறகு செயலாக்கம்
finally தொகுதி
finally தொகுதி, குறிப்பிடப்பட்டால், try தொகுதி பிழையை உயர்த்துகிறதா இல்லையா என்பதைப் பொருட்படுத்தாமல் செயல்படுத்தப்படும்.
எடுத்துக்காட்டு
try:
print(x) # x வரையறுக்கப்படவில்லை
except:
print("Something went wrong")
finally:
print("The 'try except' is finished")
வெற்றிகரமான இயக்கம்
try:
print("Hello, World!")
except:
print("Something went wrong")
finally:
print("This always executes")
# Output:
# Hello, World!
# This always executes
பிழையுடன் இயக்கம்
try:
print(undefined_variable)
except NameError:
print("Variable not found")
finally:
print("This always executes")
# Output:
# Variable not found
# This always executes
கோப்பு கையாளுதலுடன் நடைமுறை எடுத்துக்காட்டு
இது பொருள்களை மூடவும் வளங்களை சுத்தம் செய்யவும் பயனுள்ளதாக இருக்கும்:
எடுத்துக்காட்டு
எழுத முடியாத ஒரு கோப்பைத் திறக்கவும் எழுதவும் முயற்சிக்கவும்:
try:
f = open("demofile.txt", "r")
try:
content = f.read()
print("File read successfully")
except:
print("Something went wrong when reading the file")
finally:
f.close()
print("File closed successfully")
except FileNotFoundError:
print("File not found")
except PermissionError:
print("Permission denied")
except Exception as e:
print(f"An error occurred: {e}")
முக்கிய நன்மை:
கோப்புப் பொருளைத் திறந்து விடாமல், நிரல் தொடரும். finally தொகுதி கோப்பை எப்போதும் மூடுகிறது என்பதை உறுதி செய்கிறது.
ஒரு விதிவிலக்கை உயர்த்துதல்
ஒரு Python உருவாக்குநராக, ஒரு நிபந்தனை ஏற்பட்டால் விதிவிலக்கை எறிய நீங்கள் தேர்வு செய்யலாம்.
உதவிக்குறிப்பு:
ஒரு விதிவிலக்கை எறிய (அல்லது உயர்த்த), raise முக்கியச்சொல்லைப் பயன்படுத்தவும்.
எடுத்துக்காட்டு 1: பொதுவான விதிவிலக்கு
x = -1
if x < 0:
raise Exception("Sorry, no numbers below zero")
# நிரல் இங்கே நிறுத்தப்படும்
print("This won't be printed")
எடுத்துக்காட்டு 2: குறிப்பிட்ட பிழை வகை
x = "hello"
if not isinstance(x, int):
raise TypeError("Only integers are allowed")
# அல்லது
if type(x) is not int:
raise TypeError("Only integers are allowed")
பயனர் வரையறுக்கப்பட்ட விதிவிலக்குகள்
class InvalidAgeError(Exception):
"""வயது செல்லுபடியாகாதது போது எறியப்படும்"""
pass
def check_age(age):
if age < 0:
raise InvalidAgeError("Age cannot be negative")
if age > 150:
raise InvalidAgeError("Age seems unrealistic")
return True
# பயன்பாடு
try:
check_age(-5)
except InvalidAgeError as e:
print(f"Invalid age: {e}")
முழுமையான Try-Except-Else-Finally கட்டமைப்பு
def divide_numbers(a, b):
try:
result = a / b
except ZeroDivisionError:
print("Error: Cannot divide by zero!")
return None
except TypeError:
print("Error: Both arguments must be numbers!")
return None
except Exception as e:
print(f"Unexpected error: {e}")
return None
else:
print(f"Division successful: {a} / {b} = {result}")
return result
finally:
print("Division operation completed (always executes)")
# சோதனை எடுத்துக்காட்டுகள்
print("Test 1:", divide_numbers(10, 2))
print("\nTest 2:", divide_numbers(10, 0))
print("\nTest 3:", divide_numbers(10, "two"))
கட்டமைப்பு ஓட்ட வரைபடம்:
Start
|
v
try block
|
/\
Success / \ Error
/ \
v v
else except
block block
| |
v v
finally finally
block block
| |
v v
End
பயிற்சி
ஒரு try...except தொகுதியில், try தொகுதி பிழையை உயர்த்துகிறதா இல்லையா என்பதைப் பொருட்படுத்தாமல் செயல்படுத்தப்படும் ஒரு குறிப்பிட்ட தொகுதி உள்ளது. இந்த தொகுதியின் பெயர் என்ன?
பயிற்சி கேள்வி:
சிறந்த நடைமுறைகள்
except: ஐத் தவிர்க்கவும், குறிப்பிட்ட பிழை வகைகளைப் பிடிக்கவும்
finally பயன்படுத்தவும்: கோப்புகள், இணைப்புகள் மற்றும் தரவுத்தள இணைப்புகளை மூடுதல்
try தொகுதியில் வைக்க வேண்டாம்: சாத்தியமுள்ள பிழை ஏற்படும் குறியீட்டை மட்டும் சுற்றி வைக்கவும்
else பயன்படுத்தவும்: விதிவிலக்கு கையாளுதலிலிருந்து சாதாரண ஓட்டத்தைப் பிரிக்கவும்