Try/Except Statement

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.