Python හි ව්යතිරේක අත්පත් කර ගැනීම
Python හි, වෙනත් ප්රෝග්රෑමිං භාෂා සමඟ සසඳන විට, ව්යතිරේක ඇති කරන තත්වයන් ඉතා බොහෝ ඇත.
අපි ඒවා වඩාත් විස්තරාත්මකව සලකා බලමු. අප සතුව ලැයිස්තුවක් ඇති යැයි සිතමු:
lst = [1, 2, 3]
ලැයිස්තුවේ නොපවතින මූලද්රව්යයකට ප්රවේශ වෙමු:
print(lts[4])
කේතය ක්රියාත්මක කිරීමෙන් පසු දෝෂයක් (ව්යතිරේකයක්) මුද්රණය වේ:
IndexError: list index out of range
තවද අපට ව්යතිරේකය මුද්රණය නොකර වැඩ කරගෙන යාමට අවශ්ය නම්,
එය try-except සැකසුම භාවිතයෙන් අල්ලා ගත යුතුය. එය
පහත සංයුක්තිය ඇත:
try:
# ව්යතිරේකය ඇති කරන කේතය
except:
# දෝෂය පිළිකුම් කිරීම
try ගොනුව තුළ ව්යතිරේකයක් අඩංගු විය හැකි කේතය
තැබිය යුතුය. මෙම කේතය ක්රියාත්මක කිරීමේදී හදිසියේ
ව්යතිරේක තත්වයක් ඇති වුවහොත්, කේතය ක්රියා කිරීම නතර
නොවී except ගොනුවේ කේතය වෙත ගමන් කරයි.
මෙම ගොනුව තුළ, හට ගත් දෝෂයේ ස්වභාවය හැකි තරම් නිවැරදිව
විස්තර කරන පණිවිඩයක් මුද්රණය කිරීම ලියා තැබිය යුතුය.
try ගොනුව ක්රියාත්මක කිරීමේදී
ව්යතිරේක තත්වයන් කිසිවක් සිදු නොවුනේ නම්,
ප්රයෝජනවත් කේතය හුදෙක් ක්රියාත්මක වන අතර,
except ගොනුවේ කේතය - නැත.
ලැයිස්තුවේ නොපවතින මූලද්රව්යයකට ප්රවේශ වීමේදී හට ගන්නා
ව්යතිරේකය අපි අල්ලා ගනිමු. මේ සඳහා
try ගොනුව තුළ දෝෂයක ඇතිවිය හැකි කේතය
තබමු. except ගොනුව තුළ
'error: elem is not exist' යන පණිවිඩය
කොන්සෝලයට මුද්රණය කරන්න:
lst = [1, 2, 3]
try:
print(lst[4])
except:
print('error: elem is not exist')
කේතය ක්රියාත්මක කිරීමෙන් පසු මෙය මුද්රණය වේ:
'error: elem is not exist'
try-except සැකසුම ඉගෙන ගැනීමෙන් පසු
ඔබ ලියන ලද කේතයේ විලාසය වෙනස් විය යුතුය.
දැන්, ව්යතිරේක තත්වයක් හට ගත හැකි සියලුම ස්ථාන
try තුළට ගෙලවිය යුතු අතර, except
ගොනුව තුළ මෙම ව්යතිරේකයට ප්රතික්රියාව
ලියා තැබිය යුතුය.
පරිශීලකයාගෙන් අංක දෙකක් අසන්න. එකක් අනෙකින් බෙදන්න. ශුන්යයෙන් බෙදීමේ ව්යතිරේක තත්වය අල්ලා ගන්න.
පරිශීලකයාගෙන් අංකයක් අසන්න. මෙම අංකයේ වර්ගමූලය සොයන්න. ඍණ අංකයකින් මූලය උකහා ගැනීමේ ව්යතිරේක තත්වය අල්ලා ගන්න.
ලැයිස්තුවක් ලබා දී ඇත. පරිශීලකයාගෙන් පූර්ණ සංඛ්යාවක් අසන්න. පරිශීලකයා ඇතුළත් කළ අංකයේ ඇති ලැයිස්තු මූලද්රව්යය ලබා ගන්න. පරිශීලකයා ලැයිස්තු පරාසයෙන් පිටත අංකයක් ඇතුළත් කළේ නම් සිදු වන ව්යතිරේක තත්වය අල්ලා ගන්න.
පහත කේතය ලබා දී ඇත:
num = '5'
res = num + 2
print(res)
මෙම කේතයේ කුමක් වරද්ද? එහි අඩුපාඩු නිරාකරණය කරන්න.
පහත කේතය ලබා දී ඇත:
lst = [1, 2, 3, 4]
def getElem(iter):
print(iter[4])
getElem(lst)
මෙම කේතයේ කුමක් වරද්ද? එහි අඩුපාඩු නිරාකරණය කරන්න.