ບໍລິການ ScriptForge.Exception (SF_Exception)

ເນື້ອໃນ

# ບໍລິການ ScriptForge.Exception

ບໍລິການ Exception ແມ່ນການລວບລວມວິທີການຕ່າງໆເພື່ອຊ່ວຍໃນການດີບັກລະຫັດໃນສະຄຣິບ Basic ແລະ Python ແລະ ໃນການຈັດການຂໍ້ຜິດພາດໃນສະຄຣິບ Basic.

ໃນ ສະຄຣິບ Basic, ເມື່ອເກີດຂໍ້ຜິດພາດໃນເວລາເຮັດວຽກ (run-time error), ວິທີການ ແລະ ຄຸນສົມບັດຂອງບໍລິການ Exception ຈະຊ່ວຍລະບຸສະພາບການຂອງຂໍ້ຜິດພາດ ແລະ ອະນຸຍາດໃຫ້ຈັດການກັບມັນໄດ້.

- ບໍລິການ SF_Exception ແມ່ນຄ້າຍຄືກັນກັບ ອັອບເຈັກ Err ຂອງ VBA.

- ຄຸນສົມບັດ Number ລະບຸຂໍ້ຜິດພາດ.

- ໃຊ້ວິທີການ Raise ເພື່ອຂັດຈັງຫວະການປະມວນຜົນ. ວິທີການ RaiseWarning ສາມາດໃຊ້ເພື່ອດັກຈັບຄວາມຜິດປົກກະຕິໂດຍບໍ່ຂັດຈັງຫວະການເຮັດວຽກຂອງແມັກໂຄຣ.

ຂໍ້ຜິດພາດ ແລະ ຄຳເຕືອນທີ່ເກີດຂຶ້ນດ້ວຍບໍລິການ Exception ຈະຖືກເກັບໄວ້ໃນໜ່ວຍຄວາມຈຳ ແລະ ສາມາດຮຽກຄືນໄດ້ໂດຍໃຊ້ວິທີການ Console.

ຄອນໂຊລຂອງບໍລິການ Exception ເກັບກຳເຫດການ, ຄ່າຂອງຕົວປ່ຽນ ແລະ ຂໍ້ມູນກ່ຽວກັບຂໍ້ຜິດພາດ. ໃຊ້ຄອນໂຊລເມື່ອ Basic IDE ເຂົ້າເຖິງໄດ້ຍາກ, ຕົວຢ່າງໃນ ຟັງຊັນທີ່ຜູ້ໃຊ້ກຳນົດເອງໃນ Calc (UDF) ຫຼື ໃນລະຫວ່າງການປະມວນຜົນເຫດການ.

ໃຊ້ວິທີການ DebugPrint ເພື່ອເພີ່ມຂໍ້ມູນທີ່ກ່ຽວຂ້ອງເຂົ້າໃນຄອນໂຊລ. ລາຍການໃນຄອນໂຊລສາມາດຖືກສົ່ງອອກໄປເປັນໄຟລ໌ຂໍ້ຄວາມ ຫຼື ສະແດງໃຫ້ເຫັນໃນປ່ອງຢ້ຽມໂຕ້ຕອບ.

ເມື່ອເກີດຂໍ້ຜິດພາດ, ແມັກໂຄຣຂອງແອັບພລິເຄຊັນອາດຈະ:

1. ລາຍງານຂໍ້ຜິດພາດໃນຄອນໂຊລ Exception

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

3. ຢຸດການເຮັດວຽກຂອງມັນ (ເປັນທາງເລືອກ)

ເມື່ອພົບຂໍ້ຜິດພາດໃນການເອີ້ນໃຊ້ ScriptForge API, ພຶດຕິກຳຂອງແອັບພລິເຄຊັນຈະຖືກກຳນົດໂດຍຄຸນສົມບັດສະເພາະ:

1. ບັນທຶກຂໍ້ຜິດພາດລົງໃນຄອນໂຊລ Exception. ອັນນີ້ຈະຖືກເຮັດສະເໝີ.

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

   ເພື່ອບັງຄັບໃຫ້ໃຊ້ໂໝດງຽບ, ໃຫ້ຕັ້ງ:

   exception.ReportScriptErrors = False ' Default = True

3. ເພື່ອບໍ່ໃຫ້ຢຸດການເຮັດວຽກຂອງແມັກໂຄຣປັດຈຸບັນ, ໃຫ້ຕັ້ງ:

   exception.StopWhenError = False ' Default = True

   ຈາກນັ້ນ ມັນຈະມີປະໂຫຍດກ່ອນທີ່ຈະປະມວນຜົນຕໍ່ໄປ ເພື່ອສຳຫຼວດຄ່າຂອງ:

   exception.ReturnCode ' Short error description

   exception.ReturnCodeDescription ' Long error description

ໃນ ສະຄຣິບ Python ບໍລິການ Exception ສ່ວນໃຫຍ່ແມ່ນໃຊ້ເພື່ອຈຸດປະສົງໃນການດີບັກ. ວິທີການຕ່າງໆ ເຊັ່ນ DebugPrint, Console ແລະ DebugDisplay ແມ່ນມີປະໂຫຍດໃນການພິມຂໍ້ຄວາມຢ່າງວ່ອງໄວ, ບັນທຶກຂໍ້ມູນ ແລະ ເປີດປ່ອງຢ້ຽມຄອນໂຊລຈາກພາຍໃນສະຄຣິບ Python.

ບໍ່ແມ່ນທຸກວິທີການ ແລະ ຄຸນສົມບັດທີ່ຈະມີໃຫ້ໃຊ້ສຳລັບສະຄຣິບ Python ເພາະວ່າພາສາ Python ມີລະບົບການຈັດການຂໍ້ຍົກເວັ້ນທີ່ຄົບຖ້ວນຢູ່ແລ້ວ.

## ການເອີ້ນໃຊ້ບໍລິການ

ກ່ອນທີ່ຈະໃຊ້ບໍລິການ Exception, ຫ້ອງສະໝຸດ ScriptForge ຕ້ອງໄດ້ຮັບການໂຫຼດ ຫຼື ນຳເຂົ້າກ່ອນ:

• ມາໂຄຣ Basic ຕ້ອງມີການໂຫຼດຄັງສຳນວນ ScriptForge ໂດຍໃຊ້ຄຳສັ່ງດັ່ງນີ້:
GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
• ສະຄຣິບ Python ຕ້ອງມີການນຳເຂົ້າຈາກໂມດູນ scriptforge:
from scriptforge import CreateScriptService

##### ໃນ Basic

ຕົວຢ່າງຕໍ່ໄປນີ້ສະແດງໃຫ້ເຫັນສາມວິທີທີ່ແຕກຕ່າງກັນໃນການເອີ້ນໃຊ້ວິທີການ Raise. ວິທີການອື່ນໆທັງໝົດສາມາດປະຕິບັດໄດ້ໃນລັກສະນະຄ້າຍຄືກັນ.

        SF_Exception.Raise(...)

        Dim exc : exc = SF_Exception
        exc.Raise(...)

        Dim exc : exc = CreateScriptService("Exception")
        exc.Raise(...)

##### ໃນ Python

ສ່ວນຂອງລະຫັດລຸ່ມນີ້ສ້າງອິນສະແຕນຂອງບໍລິການ Exception, ບັນທຶກຂໍ້ຄວາມ ແລະ ສະແດງປ່ອງຢ້ຽມ Console.

        from scriptforge import CreateScriptService
        exc = CreateScriptService("Exception")
        someVar = 100
        exc.DebugPrint("Value of someVar", someVar)
        exc.Console()

## ຄຸນສົມບັດ

ຄຸນສົມບັດທີ່ລະບຸໄວ້ຂ້າງລຸ່ມນີ້ແມ່ນມີໃຫ້ໃຊ້ສະເພາະສຳລັບສະຄຣິບ Basic ເທົ່ານັ້ນ. ພວກມັນກ່ຽວຂ້ອງກັບຂໍ້ຜິດພາດທີ່ເກີດຂຶ້ນໃນຄຳສັ່ງແມັກໂຄຣໃດໜຶ່ງ.

ຊື່ | ອ່ານໄດ້ຢ່າງດຽວ | ຄຳອະທິບາຍ
--- | --- | ---
Description | ບໍ່ | ຂໍ້ຄວາມຂອງຂໍ້ຜິດພາດ. ຄ່າເລີ່ມຕົ້ນແມ່ນ "" ຫຼື ສາຍອັກຂະລະທີ່ມີຂໍ້ຄວາມຜິດພາດໃນເວລາເຮັດວຽກຂອງ Basic.
Number | ບໍ່ | ລະຫັດຂອງຂໍ້ຜິດພາດ. ມັນສາມາດເປັນຄ່າຕົວເລກ ຫຼື ຂໍ້ຄວາມ. ຄ່າເລີ່ມຕົ້ນແມ່ນ 0 ຫຼື ຄ່າຕົວເລກທີ່ກົງກັບລະຫັດຂໍ້ຜິດພາດໃນເວລາເຮັດວຽກຂອງ Basic.
Source | ບໍ່ | ຕຳແໜ່ງໃນລະຫັດທີ່ເກີດຂໍ້ຜິດພາດ. ມັນສາມາດເປັນຄ່າຕົວເລກ ຫຼື ຂໍ້ຄວາມ. ຄ່າເລີ່ມຕົ້ນແມ່ນ 0 ຫຼື ໝາຍເລກແຖວລະຫັດສຳລັບຂໍ້ຜິດພາດໃນເວລາເຮັດວຽກມາດຕະຖານຂອງ Basic.

ການສ້າງ (Raising) ຫຼື ການລຶບລ້າງ (clearing) Exception ຈະຕັ້ງຄ່າຄຸນສົມບັດຂອງມັນໃໝ່.

ລະດັບລະຫັດຂໍ້ຜິດພາດ 0-2000 ແມ່ນຖືກຈອງໄວ້ສຳລັບ LibreOfficeDev Basic. ຂໍ້ຜິດພາດທີ່ຜູ້ໃຊ້ກຳນົດເອງຄວນເລີ່ມຕົ້ນຈາກຄ່າທີ່ສູງກວ່ານີ້ ເພື່ອປ້ອງກັນການຊ້ຳຊ້ອນກັບການພັດທະນາໃນອະນາຄົດຂອງ LibreOfficeDev Basic.

ຄຸນສົມບັດທີ່ລະບຸໄວ້ຂ້າງລຸ່ມນີ້ແມ່ນມີໃຫ້ໃຊ້ສຳລັບສະຄຣິບ Basic ແລະ Python. ພວກມັນກ່ຽວຂ້ອງກັບຂໍ້ຜິດພາດທີ່ກວດພົບໂດຍ ScriptForge API ເທົ່ານັ້ນ.

ຊື່ | ອ່ານໄດ້ຢ່າງດຽວ | ປະເພດການສົ່ງຄືນ | ຄຳອະທິບາຍ
--- | --- | --- | ---
ReportScriptErrors | ບໍ່ | ບູລີນ (Boolean) | ລະບຸວ່າຈະໃຫ້ສະແດງຂໍ້ຜິດພາດຂອງສະຄຣິບໃນປ່ອງຂໍ້ຄວາມເມື່ອພວກມັນເກີດຂຶ້ນຫຼືບໍ່. ຄ່າເລີ່ມຕົ້ນແມ່ນ False.
ReturnCode | ແມ່ນ | ສາຍອັກຂະລະ (String) | ລະຫັດທີ່ສົ່ງຄືນໂດຍການເອີ້ນໃຊ້ ScriptForge API ຄັ້ງຫຼ້າສຸດຈາກສະຄຣິບຂອງຜູ້ໃຊ້. ມັນຈະເປັນສາຍອັກຂະລະທີ່ມີຄວາມຍາວເປັນສູນ ຖ້າທຸກຢ່າງເຮັດວຽກໂດຍບໍ່ມີຂໍ້ຜິດພາດ.
ReturnCodeDescription | ແມ່ນ | ສາຍອັກຂະລະ (String) | ຄຳອະທິບາຍຂອງລະຫັດທີ່ສົ່ງຄືນໂດຍການເອີ້ນໃຊ້ ScriptForge API ຄັ້ງຫຼ້າສຸດຈາກສະຄຣິບຂອງຜູ້ໃຊ້. ມັນຈະເປັນສາຍອັກຂະລະທີ່ມີຄວາມຍາວເປັນສູນ ຖ້າທຸກຢ່າງເຮັດວຽກໂດຍບໍ່ມີຂໍ້ຜິດພາດ.
StopWhenError | ບໍ່ | ບູລີນ (Boolean) | ລະບຸວ່າຈະໃຫ້ແມັກໂຄຣຢຸດເຮັດວຽກຫຼືບໍ່ ເມື່ອ ScriptForge ກວດພົບຂໍ້ຜິດພາດໃນສະຄຣິບຂອງຜູ້ໃຊ້.

ລາຍຊື່ວິທີການໃນບໍລິການ Exception
Clear Console ConsoleClear ConsoleToFile | DebugDisplay DebugPrint PythonPrint | PythonShell Raise RaiseWarning

## Clear

ຕັ້ງຄ່າສະຖານະຂໍ້ຜິດພາດປັດຈຸບັນໃໝ່ ແລະ ລຶບລ້າງຄຸນສົມບັດຂອງ SF_Exception.

ເມທອດນີ້ໃຊ້ໄດ້ສະເພາະກັບສະຄຣິບ Basic ເທົ່ານັ້ນ.

### ໄວຍາກອນ:

        SF_Exception.Clear()

### ຕົວຢ່າງ:

ຕົວຢ່າງຕໍ່ໄປນີ້ສະແດງໃຫ້ເຫັນວິທີການດັກຈັບຂໍ້ຍົກເວັ້ນການຫານດ້ວຍສູນ, ເຊິ່ງມີລະຫັດຂໍ້ຜິດພາດແມ່ນ 11.

        Sub Example_Clear()
            Dim a, b, c
            On Local Error GoTo Catch
            Try:
                a = 10 : b = 0
                c = a / b
                '...
                Exit Sub
            Catch:
                If SF_Exception.Number = 11 Then SF_Exception.Clear()
                'ຖ້າມີການຫານດ້ວຍສູນ, ໃຫ້ລະເລີຍຂໍ້ຜິດພາດ
        End Sub

ສຳລັບລາຍຊື່ຄົບຖ້ວນຂອງລະຫັດຂໍ້ຜິດພາດໃນເວລາເຮັດວຽກຂອງ Basic, ໃຫ້ເບິ່ງທີ່ ການດີບັກໂປຣແກຣມ Basic.

## Console

ສະແດງຂໍ້ຄວາມຄອນໂຊລໃນປ່ອງຢ້ຽມໂຕ້ຕອບແບບໂມດອລ (modal) ຫຼື ບໍ່ແມ່ນໂມດອລ (non-modal). ໃນທັງສອງໂໝດ, ຂໍ້ຄວາມທີ່ຜ່ານມາທັງໝົດທີ່ອອກໂດຍວິທີການ DebugPrint() ຫຼື ທີ່ເປັນຜົນມາຈາກຂໍ້ຍົກເວັ້ນຈະຖືກສະແດງ. ໃນໂໝດທີ່ບໍ່ແມ່ນໂມດອລ, ລາຍການຕໍ່ໆໄປຈະຖືກເພີ່ມໂດຍອັດຕະໂນມັດ.

ຖ້າຄອນໂຊລຖືກເປີດຢູ່ແລ້ວ, ເມື່ອຢູ່ໃນໂໝດທີ່ບໍ່ແມ່ນໂມດອລ, ມັນຈະຖືກນຳມາໄວ້ທາງໜ້າ.

ຄອນໂຊລແບບໂມດອລສາມາດປິດໄດ້ໂດຍຜູ້ໃຊ້ເທົ່ານັ້ນ. ຄອນໂຊລແບບທີ່ບໍ່ແມ່ນໂມດອລສາມາດປິດໄດ້ໂດຍຜູ້ໃຊ້ ຫຼື ເມື່ອແມັກໂຄຣສິ້ນສຸດການເຮັດວຽກ.

### ໄວຍາກອນ:

exc.Console(modal: bool = True)

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

modal: ກຳນົດວ່າປ່ອງຢ້ຽມຄອນໂຊລເປັນແບບໂມດອລ (True) ຫຼື ບໍ່ແມ່ນໂມດອລ (False). ຄ່າເລີ່ມຕົ້ນແມ່ນ True.

### ຕົວຢ່າງ:

##### ໃນ Basic

            SF_Exception.Console(Modal := False)

##### ໃນ Python

        exc.Console(modal = False)

## ConsoleClear

ລຶບລ້າງຄອນໂຊລໂດຍເກັບຂໍ້ຄວາມຫຼ້າສຸດໄວ້ຕາມຈຳນວນທີ່ກຳນົດ (ທາງເລືອກ). ຖ້າຄອນໂຊລຖືກເປີດໃຊ້ໃນໂໝດທີ່ບໍ່ແມ່ນໂມດອລ, ມັນຈະຖືກຣີເຟຣຊ (refresh).

### ໄວຍາກອນ:

exc.ConsoleClear(keep: int = 0)

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

keep: ຈຳນວນຂໍ້ຄວາມຫຼ້າສຸດທີ່ຈະເກັບໄວ້. ຄ່າເລີ່ມຕົ້ນແມ່ນ 0.

### ຕົວຢ່າງ:

ຕົວຢ່າງຕໍ່ໄປນີ້ລຶບລ້າງຄອນໂຊລໂດຍເກັບ 10 ຂໍ້ຄວາມຫຼ້າສຸດໄວ້.

##### ໃນ Basic

            SF_Exception.ConsoleClear(10)

##### ໃນ Python

        exc.ConsoleClear(10)

## ConsoleToFile

ສົ່ງອອກເນື້ອຫາຂອງຄອນໂຊລໄປເປັນໄຟລ໌ຂໍ້ຄວາມ. ຖ້າໄຟລ໌ມີຢູ່ແລ້ວ ແລະ ຄອນໂຊລບໍ່ຫວ່າງເປົ່າ, ມັນຈະຖືກຂຽນທັບໂດຍບໍ່ມີການແຈ້ງເຕືອນ. ສົ່ງຄືນ True ຖ້າສຳເລັດ.

### ໄວຍາກອນ:

exc.ConsoleToFile(filename: str): bool

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

filename: ຊື່ຂອງໄຟລ໌ຂໍ້ຄວາມທີ່ຈະສົ່ງເນື້ອຫາໃນຄອນໂຊລລົງໄປ. ຊື່ຈະຖືກສະແດງຕາມຄຸນສົມບັດ FileNaming ປັດຈຸບັນຂອງບໍລິການ SF_FileSystem. ໂດຍຄ່າເລີ່ມຕົ້ນ, ສາມາດໃຊ້ໄດ້ທັງ ຮູບແບບ URL ແລະ ຮູບແບບຂອງລະບົບປະຕິບັດການຕົ້ນສະບັບ.

### ຕົວຢ່າງ:

##### ໃນ Basic

            SF_Exception.ConsoleToFile("C:\Documents\myFile.txt")

##### ໃນ Python

        exc.ConsoleToFile(r"C:\Documents\myFile.txt")

## DebugDisplay

ລວມຂໍ້ໂຕ້ແຍ້ງທັງໝົດເຂົ້າເປັນສາຍອັກຂະລະດຽວທີ່ມະນຸດສາມາດອ່ານໄດ້ ແລະ ສະແດງມັນໃນ MsgBox ພ້ອມກັບໄອຄອນຂໍ້ມູນ ແລະ ປຸ່ມ OK.

ສາຍອັກຂະລະສຸດທ້າຍກໍຈະຖືກເພີ່ມເຂົ້າໃນ Console ຄືກັນ.

### ໄວຍາກອນ:

exc.DebugDisplay(arg0: any, [arg1: any, ...])

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

arg0[, arg1, ...]: ຈຳນວນຂໍ້ໂຕ້ແຍ້ງໃດໆກໍໄດ້ຂອງປະເພດໃດກໍໄດ້.

### ຕົວຢ່າງ:

##### ໃນ Basic

        SF_Exception.DebugDisplay("Current Value", someVar)

##### ໃນ Python

        exc.DebugDisplay("Current Value", someVar)

## DebugPrint

ຮວບຮວມຂໍ້ໂຕ້ແຍ້ງທັງໝົດທີ່ກຳນົດໃຫ້ເຂົ້າເປັນສາຍອັກຂະລະດຽວທີ່ມະນຸດສາມາດອ່ານໄດ້ ແລະ ເພີ່ມມັນເປັນລາຍການໃໝ່ໃນຄອນໂຊລ.

### ໄວຍາກອນ:

exc.DebugPrint(arg0: any, [arg1: any, ...])

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

arg0[, arg1, ...]: ຈຳນວນຂໍ້ໂຕ້ແຍ້ງໃດໆກໍໄດ້ຂອງປະເພດໃດກໍໄດ້.

### ຕົວຢ່າງ:

##### ໃນ Basic

        SF_Exception.DebugPrint(Null, Array(1, 2, 3), "line1" & Chr(10) & "Line2", DateSerial(2020, 04, 09))
        ' [NULL]   [ARRAY] (0:2) (1, 2, 3)  line1\nLine2  2020-04-09

##### ໃນ Python

        exc.DebugPrint(None, [1, 2, 3], "line1\nline2")
        # None  [1, 2, 3]  line1\nline2

## PythonPrint

ສະແດງລາຍຊື່ຂອງຂໍ້ໂຕ້ແຍ້ງໃນຮູບແບບທີ່ອ່ານໄດ້ໃນຄອນໂຊລຂອງແພລັດຟອມ. ຂໍ້ໂຕ້ແຍ້ງຈະຖືກແຍກດ້ວຍຕົວອັກສອນ TAB (ຈຳລອງໂດຍການໃຊ້ຍະຫວ່າງ).

ສາຍອັກຂະລະດຽວກັນນັ້ນກໍຈະຖືກເພີ່ມເຂົ້າໃນຄອນໂຊລດີບັກຂອງ ScriptForge ຄືກັນ.

ຖ້າ Python shell (APSO) ມີການເຄື່ອນໄຫວ, ເນື້ອຫາ PythonPrint ຈະຖືກຂຽນລົງໃນຄອນໂຊລ APSO ແທນທີ່ຄອນໂຊລຂອງແພລັດຟອມ.

ເມທອດນີ້ໃຊ້ໄດ້ສະເພາະກັບສະຄຣິບ Basic ເທົ່ານັ້ນ.

### ໄວຍາກອນ:

      exc.PythonPrint(arg0: any, [arg1: any, ...])

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

arg0[, arg1, ...]: ຈຳນວນຂໍ້ໂຕ້ແຍ້ງໃດໆກໍໄດ້ຂອງປະເພດໃດກໍໄດ້. ຄວາມຍາວສູງສຸດຂອງແຕ່ລະຂໍ້ໂຕ້ແຍ້ງແມ່ນ 1024 ຕົວອັກສອນ.

### ຕົວຢ່າງ:

        exc.PythonPrint(a, Array(1, 2, 3), , "line1" & Chr(10) & "Line2", DateSerial(2020, 04, 09))

ໃນ Python ໃຫ້ໃຊ້ຄຳສັ່ງ print ເພື່ອພິມລົງໃນຄອນໂຊລ APSO ຫຼື ໃຊ້ວິທີການ DebugPrint ເພື່ອພິມລົງໃນຄອນໂຊລຂອງ ScriptForge.

## PythonShell

ເປີດ APSO Python shell ເປັນປ່ອງຢ້ຽມແບບບໍ່ແມ່ນໂມດອລ. ສະຄຣິບ Python ຍັງຄົງເຮັດວຽກຕໍ່ໄປຫຼັງຈາກເປີດ shell ແລ້ວ. ຜົນໄດ້ຮັບຈາກຄຳສັ່ງ print ພາຍໃນສະຄຣິບຈະຖືກສະແດງຢູ່ໃນ shell.

ສາມາດເປີດ APSO Python shell ໄດ້ພຽງແຕ່ອັນດຽວເທົ່ານັ້ນໃນແຕ່ລະຄັ້ງ. ດັ່ງນັ້ນ, ຖ້າ Python shell ຖືກເປີດຢູ່ແລ້ວ, ການເອີ້ນໃຊ້ວິທີການນີ້ຈະບໍ່ມີຜົນຫຍັງ.

ເມທອດນີ້ຕ້ອງການການຕິດຕັ້ງສ່ວນຂະຫຍາຍ APSO (Alternative Script Organizer for Python). ນອກຈາກນັ້ນ APSO ຍັງຕ້ອງການ LibreOfficeDev Python scripting framework. ຖ້າບໍ່ມີ APSO ຫຼື Python, ຈະເກີດຂໍ້ຜິດພາດຂຶ້ນ.

### ໄວຍາກອນ:

exc.PythonShell(opt variables: dict, background = 0xFDF6E3, foreground = 0x657B83)

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

variables: ດິກຊັນນາຣີ Python ທີ່ມີຊື່ຕົວປ່ຽນ ແລະ ຄ່າທີ່ຈະຖືກສົ່ງໄປໃຫ້ APSO Python shell. ໂດຍຄ່າເລີ່ມຕົ້ນ ຕົວປ່ຽນທ້ອງຖິ່ນທັງໝົດຈະຖືກສົ່ງໄປໂດຍໃຊ້ຟັງຊັນ locals() ທີ່ມີມາໃຫ້ໃນ Python.

background: ສີພື້ນຫຼັງຂອງຄອນໂຊລທີ່ລະບຸເປັນ ຄ່າເລກຈຳນວນເຕັມ RGB 24 ບິດ. ພື້ນຫຼັງເລີ່ມຕົ້ນແມ່ນຂອງ APSO.

foreground: ສີຕົວອັກສອນຂອງຄອນໂຊລທີ່ລະບຸເປັນ ຄ່າເລກຈຳນວນເຕັມ RGB 24 ບິດ. ສີຕົວອັກສອນເລີ່ມຕົ້ນແມ່ນຂອງ APSO.

### ຕົວຢ່າງ:

ຕົວຢ່າງລຸ່ມນີ້ເປີດ APSO Python shell ໂດຍສົ່ງຕົວປ່ຽນທົ່ວໄປ ແລະ ຕົວປ່ຽນທ້ອງຖິ່ນທັງໝົດໂດຍພິຈາລະນາຈາກສະພາບການທີ່ສະຄຣິບກຳລັງເຮັດວຽກຢູ່. ຄອນໂຊລຈະສະແດງດ້ວຍຕົວອັກສອນສີຂາວເທິງພື້ນຫຼັງສີດຳ.

        exc.PythonShell({**globals(), **locals()}, \
            background = 0x0, foreground = 0xFFFFFF)

ເມື່ອ APSO Python shell ຖືກເປີດຢູ່, ຜົນໄດ້ຮັບໃດໆກໍຕາມທີ່ຖືກພິມໂດຍສະຄຣິບຈະຖືກສະແດງຢູ່ໃນ shell. ດັ່ງນັ້ນ, ສາຍອັກຂະລະທີ່ພິມໃນຕົວຢ່າງລຸ່ມນີ້ຈະຖືກສະແດງຢູ່ໃນ Python shell.

        s = CreateScriptService('Basic')
        RED, BLUE = s.RGB(255,0,0), s.RGB(0,0,255)
        exc.PythonShell(background=RED, foreground=BLUE)
        print("ສະບາຍດີ ຊາວໂລກ!")

## Raise

ສ້າງຂໍ້ຜິດພາດໃນເວລາເຮັດວຽກ. ຂໍ້ຄວາມຜິດພາດຈະຖືກສະແດງໃຫ້ຜູ້ໃຊ້ເຫັນ ແລະ ຖືກລາຍງານໃນຄອນໂຊລ. ການເຮັດວຽກຈະຖືກຢຸດ. ວິທີການ Raise() ສາມາດວາງໄວ້ພາຍໃນລຳດັບການເຮັດວຽກຂອງສະຄຣິບປົກກະຕິ ຫຼື ໃນຣູທີນຈັດການຂໍ້ຜິດພາດໂດຍສະເພາະ.

ເມທອດນີ້ໃຊ້ໄດ້ສະເພາະກັບສະຄຣິບ Basic ເທົ່ານັ້ນ.

### ໄວຍາກອນ:

        SF_Exception.Raise(Number := Err, [Source := Erl], [Description := Error$])

ສ່ວນຂອງລະຫັດທີ່ສະແດງຕໍ່ໄປນີ້ແມ່ນມີຜົນເທົ່າກັນ. ພວກມັນສະແດງໃຫ້ເຫັນວິທີທາງເລືອກໃນການສ້າງຂໍ້ຍົກເວັ້ນດ້ວຍລະຫັດ 2100.

        SF_Exception.Raise(2100)

        SF_Exception.Number = 2100
        SF_Exception.Raise()

        SF_Exception.Raise Number := 2100

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

Number: ລະຫັດຂໍ້ຜິດພາດ, ເປັນຕົວເລກ ຫຼື ເປັນສາຍອັກຂະລະ. ຄ່າເລີ່ມຕົ້ນແມ່ນຄ່າຈາກຟັງຊັນ Err ທີ່ມີມາໃຫ້ໃນ Basic, ເຊິ່ງໃນກໍລະນີນີ້ Number ແມ່ນທາງເລືອກ.

ລະດັບລະຫັດຂໍ້ຜິດພາດ 0-2000 ແມ່ນຖືກຈອງໄວ້ສຳລັບ LibreOfficeDev Basic. ຂໍ້ຜິດພາດທີ່ຜູ້ໃຊ້ກຳນົດເອງຄວນເລີ່ມຕົ້ນຈາກຄ່າທີ່ສູງກວ່ານີ້ ເພື່ອປ້ອງກັນການຊ້ຳຊ້ອນກັບການພັດທະນາໃນອະນາຄົດຂອງ LibreOfficeDev Basic.

Source: ຕຳແໜ່ງຂອງຂໍ້ຜິດພາດ, ເປັນຕົວເລກ ຫຼື ເປັນສາຍອັກຂະລະ. ຄ່າເລີ່ມຕົ້ນແມ່ນຄ່າຈາກຟັງຊັນ Erl ທີ່ມີມາໃຫ້ໃນ Basic.

Description: ຂໍ້ຄວາມທີ່ຈະສະແດງໃຫ້ຜູ້ໃຊ້ເຫັນ ແລະ ລາຍງານໃນຄອນໂຊລ. ຄ່າເລີ່ມຕົ້ນແມ່ນຄ່າຈາກຟັງຊັນ Error$ ທີ່ມີມາໃຫ້ໃນ Basic.

### ຕົວຢ່າງ:

        Sub Example_Raise()
            Dim a, b, c
            On Local Error GoTo Catch
            Try:
                a = 10 : b = 0
                c = a / b
                '...
                Exit Sub
            Catch:
                'ເບິ່ງຮູບແບບຕ່າງໆຂ້າງລຸ່ມນີ້ ...
        End Sub

ເພື່ອສ້າງຂໍ້ຍົກເວັ້ນດ້ວຍຄ່າມາດຕະຖານ:

        Catch:
            SF_Exception.Raise()

ເພື່ອສ້າງຂໍ້ຍົກເວັ້ນດ້ວຍລະຫັດສະເພາະ:

        Catch:
            SF_Exception.Raise(11)

ເພື່ອປ່ຽນແທນຂໍ້ຄວາມປົກກະຕິ:

        Catch:
            SF_Exception.Raise(, , "ມັນບໍ່ແມ່ນຄວາມຄິດທີ່ດີທີ່ຈະຫານດ້ວຍສູນ.")

ເພື່ອສ້າງຂໍ້ຜິດພາດຂອງແອັບພລິເຄຊັນ:

        Catch:
            SF_Exception.Raise("MyAppError", "Example_Raise()", "ມີບາງຢ່າງຜິດພາດເກີດຂຶ້ນ !")

## RaiseWarning

ວິທີການນີ້ມີໄວຍາກອນ, ຂໍ້ໂຕ້ແຍ້ງ ແລະ ພຶດຕິກຳຄືກັນກັບວິທີການ Raise() ທຸກປະການ.

ແນວໃດກໍຕາມ, ເມື່ອມີການແຈ້ງເຕືອນ (warning) ເກີດຂຶ້ນ, ການເຮັດວຽກຂອງແມັກໂຄຣຈະບໍ່ຖືກຢຸດ.

ເມທອດນີ້ໃຊ້ໄດ້ສະເພາະກັບສະຄຣິບ Basic ເທົ່ານັ້ນ.

### ໄວຍາກອນ:

        SF_Exception.RaiseWarning([Number As Variant], [Source As Variant], [Description As String])

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

Number: ລະຫັດຂໍ້ຜິດພາດ, ເປັນຕົວເລກ ຫຼື ເປັນສາຍອັກຂະລະ. ຄ່າເລີ່ມຕົ້ນແມ່ນຄ່າຈາກຟັງຊັນ Err ທີ່ມີມາໃຫ້ໃນ Basic, ເຊິ່ງໃນກໍລະນີນີ້ Number ແມ່ນທາງເລືອກ.

ລະດັບລະຫັດຂໍ້ຜິດພາດ 0-2000 ແມ່ນຖືກຈອງໄວ້ສຳລັບ LibreOfficeDev Basic. ຂໍ້ຜິດພາດທີ່ຜູ້ໃຊ້ກຳນົດເອງຄວນເລີ່ມຕົ້ນຈາກຄ່າທີ່ສູງກວ່ານີ້ ເພື່ອປ້ອງກັນການຊ້ຳຊ້ອນກັບການພັດທະນາໃນອະນາຄົດຂອງ LibreOfficeDev Basic.

Source: ຕຳແໜ່ງຂອງຂໍ້ຜິດພາດ, ເປັນຕົວເລກ ຫຼື ເປັນສາຍອັກຂະລະ. ຄ່າເລີ່ມຕົ້ນແມ່ນຄ່າຈາກຟັງຊັນ Erl ທີ່ມີມາໃຫ້ໃນ Basic.

Description: ຂໍ້ຄວາມທີ່ຈະສະແດງໃຫ້ຜູ້ໃຊ້ເຫັນ ແລະ ລາຍງານໃນຄອນໂຊລ. ຄ່າເລີ່ມຕົ້ນແມ່ນຄ່າຈາກຟັງຊັນ Error$ ທີ່ມີມາໃຫ້ໃນ Basic.

### ຕົວຢ່າງ:

        SF_Exception.RaiseWarning(Source:="Example_Raise()", _
            Description:="ມີບາງຢ່າງຜິດພາດເກີດຂຶ້ນ !", _
            Number:="MyAppError")

ຫົວຂໍ້ທີ່ກ່ຽວຂ້ອງ

ຟັງຊັນການຈັດການກັບຂໍ້ຜິດພາດ

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