Tulong sa LibreOffice 25.8
Ang Exception Ang serbisyo ay isang koleksyon ng mga pamamaraan upang tumulong sa pag-debug ng code sa Basic at Python script at sa error sa paghawak sa Basic script.
Sa Mga pangunahing script , kapag may naganap na error sa run-time, ang mga pamamaraan at katangian ng Exception tulong ng serbisyo na matukoy ang konteksto ng error at payagan itong pangasiwaan ito.
Ang SF_Exception ang serbisyo ay katulad ng VBA Err bagay .
Ang Numero Kinikilala ng ari-arian ang error.
Gamitin ang Itaas paraan upang maputol ang pagproseso. Ang Itaas ang Babala paraan ay maaaring gamitin upang bitag ang isang anomalya nang hindi nakakaabala sa macro execution.
Mga error at babala na ibinangon sa Exception Ang serbisyo ay naka-imbak sa memorya at maaaring makuha gamit ang Console paraan.
Ang Exception ang service console ay nag-iimbak ng mga kaganapan, variable na halaga at impormasyon tungkol sa mga error. Gamitin ang console kapag ang Basic IDE ay hindi madaling ma-access, halimbawa sa Calc na mga function na tinukoy ng gumagamit (UDF) o sa panahon ng pagproseso ng mga kaganapan.
Gamitin ang DebugPrint paraan upang magdagdag ng anumang nauugnay na impormasyon sa console. Maaaring i-dump ang mga entry sa console sa isang text file o i-visualize sa isang dialog window.
Kapag naganap ang isang error, ang isang macro ng application ay maaaring:
Iulat ang error sa Exception console
Ipaalam sa user ang tungkol sa error gamit ang alinman sa karaniwang mensahe o custom na mensahe
Opsyonal na ihinto ang pagpapatupad nito
Sa Mga script ng Python ang Exception Ang serbisyo ay kadalasang ginagamit para sa mga layunin ng pag-debug. Mga pamamaraan tulad ng DebugPrint , Console at DebugDisplay ay kapaki-pakinabang upang mabilis na mag-print ng mga mensahe, mag-log ng data at buksan ang console window mula sa loob ng script ng Python.
Hindi lahat ng mga pamamaraan at katangian ay magagamit para sa mga script ng Python dahil ang wikang Python ay mayroon nang isang komprehensibong exception handling system.
Bago gamitin ang serbisyong Exception ang ScriptForge na library ay kailangang i-load o i-import:
Ang mga sumusunod na halimbawa ay nagpapakita ng tatlong magkakaibang paraan upang tawagan ang pamamaraan Itaas . Ang lahat ng iba pang mga pamamaraan ay maaaring isagawa sa isang katulad na paraan.
    SF_Exception.Raise(...)
  
    Dim exc : exc = SF_Exception
    exc.Raise(...)
  
    Dim exc : exc = CreateScriptService("Exception")
    exc.Raise(...)
  Ang code snippet sa ibaba ay lumilikha ng isang instance ng Exception serbisyo, nag-log ng mensahe at ipinapakita ang Console bintana.
    from scriptforge import CreateScriptService
    exc = CreateScriptService("Exception")
    someVar = 100
    exc.DebugPrint("Value of someVar", someVar)
    exc.Console()
  Ang mga property na nakalista sa ibaba ay magagamit lamang para sa Basic mga script.
| Pangalan | Readonly | Mga nilalaman | 
|---|---|---|
| Description | Hindi | Ang teksto ng mensahe ng error. Ang default na value ay "" o isang string na naglalaman ng Basic run-time na mensahe ng error. | 
| Number | Hindi | Ang code ng error. Maaari itong isang numerong halaga o teksto. Ang default na value ay 0 o ang numeric na value na tumutugma sa Basic run-time na error code. | 
| Source | Hindi | Ang lokasyon sa code kung saan nangyari ang error. Maaari itong isang numerong halaga o teksto. Ang default na value ay 0 o ang code line number para sa isang karaniwang Basic run-time na error. | 
Pagtaas o paglilinis ng isang Exception ni-reset ang mga katangian nito.
| Listahan ng Mga Paraan sa Serbisyo ng Exception | ||
|---|---|---|
Nire-reset ang kasalukuyang status ng error at iki-clear ang SF_Exception ari-arian.
    SF_Exception.Clear()
  Ang sumusunod na halimbawa ay nagpapakita kung paano mahuli ang isang division-by-zero exception, na ang error code ay 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()
            'Kung dibisyon sa zero, huwag pansinin ang error
    End Sub
  Para sa kumpletong listahan ng Basic run-time error code, sumangguni sa Pag-debug sa isang Pangunahing Programa .
Ipinapakita ang mga mensahe ng console sa isang modal o non-modal na dialog. Sa parehong mga mode, ang lahat ng mga nakaraang mensahe na ibinigay ng a DebugPrint() paraan o resulta mula sa isang pagbubukod ay ipinapakita. Sa non-modal mode, ang mga susunod na entry ay awtomatikong idinagdag.
Kung nakabukas na ang console, kapag non-modal, dinadala ito sa harap.
Ang isang modal console ay maaari lamang isara ng user. Ang isang non-modal console ay maaaring isara ng user o sa macro termination.
exc.Console(modal: bool = True)
modal : Tukuyin kung ang console window ay modal ( totoo ) o di-modal ( Mali ). Default na halaga ay totoo .
        SF_Exception.Console(Modal := False)
  
    exc.Console(modal = False)
  Nililinis ang console na nagpapanatili ng opsyonal na bilang ng mga kamakailang mensahe. Kung ang console ay na-activate sa non-modal mode, ito ay nire-refresh.
exc.ConsoleClear(keep: int = 0)
panatilihin : Ang bilang ng mga kamakailang mensahe na dapat panatilihin. Ang default na halaga ay 0.
Ang sumusunod na halimbawa ay nililinis ang console na pinapanatili ang 10 pinakahuling mensahe.
        SF_Exception.ConsoleClear(10)
  
    exc.ConsoleClear(10)
  Ini-export ang mga nilalaman ng console sa isang text file. Kung ang file ay mayroon na at ang console ay walang laman, ito ay mapapatungan nang walang babala. Nagbabalik totoo kung matagumpay.
exc.ConsoleToFile(filename: str): bool
filename : Ang pangalan ng text file kung saan dapat ilagay ang console. Ang pangalan ay ipinahayag ayon sa kasalukuyang FileNaming ari-arian ng SF_FileSystem serbisyo. Bilang default, URL notation at ang format ng katutubong operating system ay parehong tinatanggap.
        SF_Exception.ConsoleToFile("C:\Documents\myFile.txt")
  
    exc.ConsoleToFile(r"C:\Documents\myFile.txt")
  Pinagsasama-sama ang lahat ng mga argumento sa isang string na nababasa ng tao at ipinapakita ito sa isang MsgBox na may icon ng Impormasyon at isang pindutan na OK.
Ang huling string ay idinagdag din sa Console.
exc.DebugDisplay(arg0: any, [arg1: any, ...])
arg0[, arg1, ...] : Anumang bilang ng mga argumento ng anumang uri.
    SF_Exception.DebugDisplay("Current Value", someVar)
  
    exc.DebugDisplay("Current Value", someVar)
  Pinagsasama-sama ang lahat ng ibinigay na argumento sa isang string na nababasa ng tao at idinaragdag ito bilang bagong entry sa console.
exc.DebugPrint(arg0: any, [arg1: any, ...])
arg0[, arg1, ...] : Anumang bilang ng mga argumento ng anumang uri.
    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
  
    exc.DebugPrint(None, [1, 2, 3], "line1\nline2")
    # None  [1, 2, 3]  line1\nline2
  Ipinapakita ang listahan ng mga argumento sa isang nababasang anyo sa platform console. Ang mga argumento ay pinaghihiwalay ng isang TAB na character (ginagaya ng mga puwang).
Ang parehong string ay idinagdag sa ScriptForge debug console.
Kung Python shell (APSO) ay aktibo, PythonPrint isinusulat ang content sa APSO console bilang kapalit ng platform console.
  exc.PythonPrint(arg0: any, [arg1: any, ...])
  arg0[, arg1, ...] : Anumang bilang ng mga argumento ng anumang uri. Ang maximum na haba ng bawat indibidwal na argumento ay 1024 character.
    exc.PythonPrint(a, Array(1, 2, 3), , "line1" & Chr(10) & "Line2", DateSerial(2020, 04, 09))
  Sa Python gumamit ng a print pahayag na ipi-print sa APSO console o gamitin ang DebugPrint paraan upang mag-print sa console ng ScriptForge.
Nagbubukas ng APSO Python shell bilang isang non-modal na window. Ang script ng Python ay patuloy na tumatakbo pagkatapos mabuksan ang shell. Ang output mula sa print ang mga pahayag sa loob ng script ay ipinapakita sa shell.
Isang instance lang ng APSO Python shell ang mabubuksan anumang oras. Samakatuwid, kung ang isang shell ng Python ay nakabukas na, ang pagtawag sa paraang ito ay walang epekto.
exc.PythonShell(opt variables: dict, background = 0xFDF6E3, foreground = 0x657B83)
mga variable : isang diksyunaryo ng Python na may mga variable na pangalan at value na ipapasa sa APSO Python shell. Bilang default, ang lahat ng mga lokal na variable ay ipinapasa gamit ang builtin ng Python mga lokal() function.
background: Kulay ng background ng console na tinukoy bilang RGB 24 bits integer value. Ang default na background ay sa APSO.
foreground: Kulay ng foreground ng console na tinukoy bilang RGB 24 bits integer value. Default na foreground ay ang sa APSO.
Binubuksan ng halimbawa sa ibaba ang APSO Python shell na nagpapasa sa lahat ng global at lokal na variable na isinasaalang-alang ang konteksto kung saan tumatakbo ang script. Ipinapakita ang console na may mga puting character sa isang itim na background.
    exc.PythonShell({**globals(), **locals()}, \
        background = 0x0, foreground = 0xFFFFFF)
  Kapag nakabukas ang APSO Python shell, anumang kasunod na output na na-print ng script ay ipapakita sa shell. Samakatuwid, ang string na naka-print sa halimbawa sa ibaba ay ipapakita sa shell ng Python.
    s = CreateScriptService('Basic')
    RED, BLUE = s.RGB(255,0,0), s.RGB(0,0,255)
    exc.PythonShell(background=RED, foreground=BLUE)
    print("Hello world!")
  Bumubuo ng error sa run-time. Ang isang mensahe ng error ay ipinapakita sa user at iniulat sa console. Itinigil ang pagbitay. Ang Itaas() paraan ay maaaring ilagay sa loob ng normal na daloy ng script o sa isang nakatalagang gawain sa paghawak ng error.
    SF_Exception.Raise(Number := Err, [Source := Erl], [Description := Error$])
  Ang mga snippet ng code na ipinakita sa susunod ay katumbas. Nagpapakita sila ng mga alternatibong paraan para magtaas ng exception sa code 2100.
    SF_Exception.Raise(2100)
  
    SF_Exception.Number = 2100
    SF_Exception.Raise()
  
    SF_Exception.Raise Number := 2100
  Number: Ang error code, bilang isang numero o bilang isang string. Ang default na value ay ang Err Basic builtin function, kung saan ang Number ay opsyonal.
Pinagmulan : Ang lokasyon ng error, bilang isang numero o bilang isang string. Ang default na halaga ay ang ng Erl Pangunahing builtin na function.
Paglalarawan : Ang mensaheng ipapakita sa user at iulat sa console. Ang default na halaga ay ang ng Error$ Pangunahing builtin na function.
    Sub Example_Raise()
        Dim a, b, c
        On Local Error GoTo Catch
        Try:
            a = 10 : b = 0
            c = a / b
            '...
            Exit Sub
        Catch:
            'Tingnan ang mga variant sa ibaba ...
    End Sub
  Upang itaas ang isang pagbubukod sa mga karaniwang halaga:
    Catch:
        SF_Exception.Raise()
  Upang itaas ang isang pagbubukod sa isang partikular na code:
    Catch:
        SF_Exception.Raise(11)
  Para palitan ang karaniwang mensahe:
    Catch:
        SF_Exception.Raise(, , "Hindi magandang ideya na hatiin sa zero.")
  Upang itaas ang isang error sa application:
    Catch:
        SF_Exception.Raise("MyAppError", "Example_Raise()", "May nangyaring mali !")
  Ang pamamaraang ito ay may eksaktong parehong syntax, argumento at pag-uugali gaya ng Itaas() paraan.
Gayunpaman, kapag ang babala ay itinaas, hindi huminto ang macro execution .
    SF_Exception.RaiseWarning([Number As Variant], [Source As Variant], [Description As String])
  
    SF_Exception.RaiseWarning(Source:="Example_Raise()", _
        Paglalarawan:="May nangyaring mali !", _
        Number:="MyAppError")