වැඩසටහනක් ක්රියාත්මක වන විට, බලාපොරොත්තු නොවූ දෝෂ (errors) ඇතිවිය හැක. සාමාන්යයෙන්, මෙවැනි දෝෂයක් (Exception) ඇතිවූ විට, වැඩසටහන එතැනින්ම නතර වී බිඳ වැටේ (crash). **Exception Handling** යනු මෙවැනි දෝෂ "හසුකරගෙන" (catch), වැඩසටහන බිඳ නොවැටී ඉදිරියට ගෙන යාමට යොදාගන්නා ක්රමවේදයයි.
මේ සඳහා අපි **try** සහ **except** යන මූල පද භාවිතා කරමු.
try block: දෝෂයක් ඇතිවිය හැකි යැයි ඔබ සිතන කේතය මෙම කොටස තුළ ලියන්න.except block: try කොටස තුළ දෝෂයක් ඇති වුවහොත්, වැඩසටහන නතර නොවී, කෙලින්ම මෙම කොටසට පැමිණ මෙහි ඇති කේතය ක්රියාත්මක කරයි.ව්යුහය (Syntax):
try:
# දෝෂයක් ඇතිවිය හැකි කේතය
except:
# දෝෂයක් ඇති වුවහොත් ක්රියාත්මක වන කේතය
උදාහරණය:
try:
numerator = 10
denominator = int(input("Enter a number to divide 10 by: ")) # පරිශීලකයා 0 හෝ අකුරු ඇතුළත් කළ හැක
result = numerator / denominator
print(f"The result is {result}")
except:
print("Oops! Something went wrong. Please check your input.")
print("--- Program continues after the try-except block ---")
සියලුම දෝෂ එකම `except` එකකින් හසුකර ගන්නවාට වඩා, එක් එක් දෝෂ වර්ගයට වෙන වෙනම ප්රතිචාර දැක්වීම වඩාත් හොඳ ක්රමයකි.
උදාහරණය:
try:
age = int(input("Please enter your age: "))
if age < 0:
raise ValueError("Age cannot be negative.") # අපිටම දෝෂයක් මතු කළ හැක
print(f"You will be {age + 1} next year.")
except ValueError as e: # int() එකට අකුරු දුන්නොත් හෝ අප මතුකල දෝෂය ඇතිවුවහොත් මෙය ක්රියාත්මක වේ
print(f"Invalid input: {e}. Please enter a valid number for age.")
except Exception as e: # බලාපොරොත්තු නොවූ වෙනත් ඕනෑම දෝෂයක් සඳහා
print(f"An unexpected error occurred: {e}")
try...except ව්යුහයට **finally** නමින් තවත් කොටසක් එක් කළ හැක. finally කොටසේ ඇති කේතය දෝෂයක් ඇති වුවත්, නැතත්, සෑම විටම අවසානයේ ක්රියාත්මක වේ.
try:
print("Step 1: Code inside try block.")
# result = 10 / 0 # දෝෂයක් ඇතිවන අවස්ථාව
except ZeroDivisionError:
print("Step 2: Caught a ZeroDivisionError.")
finally:
print("Step 3: This 'finally' block runs no matter what.")
දෝෂ කළමනාකරණය මඟින් ඔබේ වැඩසටහන් වඩාත් ශක්තිමත් සහ විශ්වාසදායක වේ.