exception គឺជារឿងហេតុមិនធម្មតាទាំងឡាយណា ដែលកើតមានឡើងនៅពេលដែលកម្មវិធីកំពុងតែដំណើរការ។ កន្លងមកយើងបានជួបប្រទះនឹង exception មួយចំនួនរួចទៅហើយ មានដូចជាកំហុសផ្សេងៗ ដែលបណ្តាលមកពីការសរសេរ statement មិនត្រឹមត្រូវជាដើម ។ល។។
exception មានជាច្រើនប្រភេទ ដូចជានៅពេលដែលយើងសរសេរ statement មិនត្រឹមត្រូវទៅតាមក្បួនខ្នាតនៅក្នុងភាសា Python, exception ប្រភេទ SyntaxError នឹងកើតមានឡើង។
តាមពិត exception ក៏ជា instance នៃថ្នាក់ដែលជាប្រភេទនៃ exception ណាមួយដែរ។ ជាក់ស្តែង គ្រប់ការសរសេរ statement ខុស នឹងបណ្តាលអោយ exception ដែលជា instance នៃថ្នាក់ឈ្មោះ SyntaxError ត្រូវបានបង្កើតឡើង។ ហើយក្រៅពី exception ប្រភេទ SyntaxError នេះ នៅមាន exception ជាច្រើនប្រភេទទៀត ដែលអាចត្រូវបង្កើតឡើង អាស្រ័យទៅតាមកំហុសផ្សេងៗ។
យ៉ាងណាម៉ិញ try/except ជា statement ដែលត្រូវគេយកទៅប្រើប្រាស់សាកល្បងអនុវត្ត block នៃ statement នៅក្នុង statement try ហើយតំរូវអោយអនុវត្ត block នៃ statement នៅក្នុង statement except បើសិនជាមាន exception កើតឡើងនៅក្នុង statement try ។ ពិនិត្យកម្មវិធីខាងក្រោមនេះ៖
try: 5/0 except: print('Exception occurred!!')
Exception occurred!
ក្នុងករណីមាន exception កើតមានឡើង បើយើងមិនធ្វើអ្វីសោះនោះទេ កម្មវិធីនឹងឈប់លែងដំណើរការ។ តែបើយើងប្រើ statement try/except នៅពេល exception កើតឡើង block នៃ statement នៅក្នុង statement except នឹងត្រូវយកទៅអនុវត្ត ហើយ statement ជាបន្តបន្ទាប់ទៅទៀត នឹងត្រូវយកទៅអនុវត្ត។ ពិនិត្យកម្មវិធីខាងក្រោមនេះ៖
try: 5/0 except: print('Exception occurred!') print('Block of statement ends here.') print('The program ends here.')
Exception occurred! Block of statement ends here. The program ends here.
ការប្រើប្រាស់ try/except ដូចខាងលើនេះ ត្រូវចាត់ទុកថាជាការទទួលយក exception ឬ catching exception ដែលអាចត្រូវធ្វើតាមរបៀបម៉្យាងទៀត ដូចខាងក្រោមនេះ៖
try: 5/0 except ArithmeticError: print('Exception occurred!') print('Block of statement ends here.') print('The program ends here.')
Exception occurred! Block of statement ends here. The program ends here.
ដោយ exception ក៏ជាវត្ថុដែលជា instance នៃថ្នាក់ណាមួយដែរ ដូចនេះយើងអាចទទួលយក exception ដោយដាក់ឈ្មោះអោយវាដូចខាងក្រោមនេះ៖
try: 5/0 except ArithmeticError as error: print('Exception occurred!') print('Block of statement ends here.') print('The program ends here.')
Exception occurred! Block of statement ends here. The program ends here.
មួយវិញទៀត exception ដែលកើតមានឡើង អាចស្ថិតនៅក្នុងប្រភេទឬថ្នាក់ណាមួយ ដែលយើងមិនអាចដឹងមុនបាន។ ក៏ប៉ុន្តែ យើងអាចប្រើប្រាស់ថ្នាក់នៃ exception ជាច្រើនប្រភេទក្នុងពេលជាមួយគ្នា ដើម្បីចាំទទួលយក exception ប្រភេទណាមួយនៅក្នុងចំណោមប្រភេទទាំងនោះ។
try: 5/0 except (ArithmeticError, NameError) as error: print('Exception occurred!') print('Block of statement ends here.') print('The program ends here.')
Exception occurred! Block of statement ends here. The program ends here.
លើសពិនេះទៀត យើងអាចប្រើប្រាស់ statement except ជាច្រើន ដើម្បីតំរូវអោយអនុវត្ត block នៃ statement ខុសៗគ្នា អាស្រ័យទៅតាមប្រភេទនៃ exception ។
try: 5/0 except (ArithmeticError, NameError): print('Exception occurred!') print('Block of statement ends here.') except MemoryError as error: print("Exception of MemoryError occurred") print('The program ends here.')
Exception occurred! Block of statement ends here. The program ends here.