ເນື້ອໃນ

# ຄຳສັ່ງ Resume

ລ້າງຂໍ້ມູນຂໍ້ຜິດພາດ ແລະ ລະບຸວ່າຈະໃຫ້ເຮັດຫຍັງຕໍ່ໄປ.

### ໄວຍາກອນ:

         Resume [ [0] | label | Next ]

### ພາຣາມິເຕີ:

0: ລ້າງຂໍ້ມູນຂໍ້ຜິດພາດ ແລະ ເຮັດຄຳສັ່ງທີ່ເປັນສາເຫດຂອງຂໍ້ຜິດພາດນັ້ນຄືນໃໝ່. 0 ແມ່ນສາມາດລະເວັ້ນໄດ້.

label: ລ້າງຂໍ້ມູນຂໍ້ຜິດພາດ ແລະ ກັບໄປເຮັດວຽກຕໍ່ທີ່ຕຳແໜ່ງປ້າຍຊື່ (label) ທີ່ລະບຸໄວ້ໃນຊັບຣູທິນປັດຈຸບັນ.

Next: ລ້າງຂໍ້ມູນຂໍ້ຜິດພາດ ແລະ ເຮັດວຽກໃນຄຳສັ່ງຖັດຈາກຄຳສັ່ງທີ່ເຮັດໃຫ້ເກີດຂໍ້ຜິດພາດ.

ຂໍ້ມູນຂໍ້ຜິດພາດແມ່ນຖືກສ້າງຂຶ້ນດ້ວຍຟັງຊັນ Erl, Err ແລະ Error$.

- Erl: ເລກແຖວໃນໂມດູນທີ່ເກີດຂໍ້ຜິດພາດ.

- Err: ໝາຍເລກຂໍ້ຜິດພາດ.

- Error[$]: ຄຳອະທິບາຍຂໍ້ຜິດພາດ.

ການໃຊ້ Resume ເພື່ອລ້າງຂໍ້ມູນຂໍ້ຜິດພາດ ຈະຊ່ວຍປ້ອງກັນບໍ່ໃຫ້ເງື່ອນໄຂທີ່ຖືກຈັດການແລ້ວສົ່ງຕໍ່ໄປຍັງຣູທິນທີ່ຮຽກໃຊ້.

### ລະຫັດຂໍ້ຜິດພາດ:

20 Resume ໂດຍບໍ່ມີຂໍ້ຜິດພາດ

## ຕົວຢ່າງ:

ຣູທິນການຈັດການຂໍ້ຜິດພາດທົ່ວໄປປະກອບດ້ວຍ: ການແຈ້ງເຕືອນຜູ້ໃຊ້, ການແກ້ໄຂຂໍ້ຜິດພາດ, ການບັນທຶກຂໍ້ມູນຂໍ້ຜິດພາດ ຫຼື ການສົ່ງຂໍ້ຜິດພາດທີ່ກຳນົດເອງເຊິ່ງມາພ້ອມກັບຄຳອະທິບາຍວິທີແກ້ໄຂ. ໃຫ້ໃຊ້ Resume label ເມື່ອຕ້ອງການໃຊ້ກົນໄກດັ່ງກ່າວ.

          Sub Error_Handling
          try: On Error GoTo catch
              ' ໂຄ້ດຂອງຣູທິນຢູ່ບ່ອນນີ້
              Error 91 ' ຕົວຢ່າງຂໍ້ຜິດພາດ
          finally:
              ' ໂຄ້ດສຳລັບລ້າງຂໍ້ມູນຂອງຣູທິນຢູ່ບ່ອນນີ້
              Exit Sub
          catch:
              Print Erl, Err, Error$
              Resume finally
          End Sub ' Error_Handling

ໃຊ້ Resume Next ໃນກໍລະນີ ເຊັ່ນ: ການລາຍງານຄວາມຜິດປົກກະຕິທີ່ພົບໃນລະຫວ່າງຂະບວນການເຮັດວຽກແບບຊ້ຳຄືນທີ່ບໍ່ຄວນຖືກຂັດຈັງຫວະ. ໃນກໍລະນີດັ່ງກ່າວ ອາດຈຳເປັນຕ້ອງມີຣູທິນການຈັດການຫຼາຍອັນ.

          Sub Iteration
              planets = Array("☿","♀","♁","♂","♃","♄","⛢","♆")
          try:
              On Error GoTo ReportAndProcessNext
              For ndx = -3 To 11 Step 1
                  MsgBox planets(ndx)
              Next
              On Error GoTo 0 ' Stop error catching
          finally:
              Exit Sub
          ReportAndProcessNext:
              Print "Error "& Err &" at line "& Erl &" - "& Error$
              Resume Next
          End Sub ' Iteration

ການໃຊ້ Resume ໂດຍບໍ່ມີພາຣາມິເຕີ ເພື່ອເຮັດຄຳສັ່ງທີ່ຜິດພາດຄືນໃໝ່ ອາດຈະເໝາະສົມໃນບາງສະຖານະການ. ແນວໃດກໍຕາມ, ມັນອາດຈະເຮັດໃຫ້ເກີດການວົນຊ້ຳທີ່ບໍ່ມີວັນສິ້ນສຸດ (infinite loop) ໄດ້.

ກະລຸນາສະໜັບສະໜູນພວກເຮົາ!