ScriptForge . Exception serbisyo

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.

tip

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:

  1. Iulat ang error sa Exception console

  2. Ipaalam sa user ang tungkol sa error gamit ang alinman sa karaniwang mensahe o custom na mensahe

  3. 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.

note

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.


Panawagan sa serbisyo

Sa Basic

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(...)
  
Sa Python

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()
  

Mga Katangian

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.


tip

Pagtaas o paglilinis ng isang Exception ni-reset ang mga katangian nito.


note

Ang saklaw ng error code 0-2000 ay nakalaan para sa LibreOffice Basic. Maaaring magsimula ang mga error na tinukoy ng user sa mas matataas na halaga upang maiwasan ang banggaan sa LibreOffice Basic na mga pag-unlad sa hinaharap.


Listahan ng Mga Paraan sa Serbisyo ng Exception

Clear
Console
ConsoleClear
ConsoleToFile

DebugDisplay
DebugPrint
PythonPrint

PythonShell
Raise
RaiseWarning


Clear

Nire-reset ang kasalukuyang status ng error at iki-clear ang SF_Exception ari-arian.

note

Ang pamamaraang ito ay magagamit lamang para sa Basic mga script.


Syntax:


    SF_Exception.Clear()
  

Halimbawa:

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
  
tip

Para sa kumpletong listahan ng Basic run-time error code, sumangguni sa Pag-debug sa isang Pangunahing Programa .


Console

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.

Syntax:

exc.Console(modal: bool = True)

Mga Parameter:

modal : Tukuyin kung ang console window ay modal ( totoo ) o di-modal ( Mali ). Default na halaga ay totoo .

Halimbawa:

Sa Basic

        SF_Exception.Console(Modal := False)
  
Sa Python

    exc.Console(modal = False)
  

ConsoleClear

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.

Syntax:

exc.ConsoleClear(keep: int = 0)

Mga Parameter:

panatilihin : Ang bilang ng mga kamakailang mensahe na dapat panatilihin. Ang default na halaga ay 0.

Halimbawa:

Ang sumusunod na halimbawa ay nililinis ang console na pinapanatili ang 10 pinakahuling mensahe.

Sa Basic

        SF_Exception.ConsoleClear(10)
  
Sa Python

    exc.ConsoleClear(10)
  

ConsoleToFile

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.

Syntax:

exc.ConsoleToFile(filename: str): bool

Mga Parameter:

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.

Halimbawa:

Sa Basic

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

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

DebugDisplay

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.

Syntax:

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

Mga Parameter:

arg0[, arg1, ...] : Anumang bilang ng mga argumento ng anumang uri.

Halimbawa:

Sa Basic

    SF_Exception.DebugDisplay("Current Value", someVar)
  
Sa Python

    exc.DebugDisplay("Current Value", someVar)
  

DebugPrint

Pinagsasama-sama ang lahat ng ibinigay na argumento sa isang string na nababasa ng tao at idinaragdag ito bilang bagong entry sa console.

Syntax:

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

Mga Parameter:

arg0[, arg1, ...] : Anumang bilang ng mga argumento ng anumang uri.

Halimbawa:

Sa 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
  
Sa Python

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

PythonPrint

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.

note

Ang pamamaraang ito ay magagamit lamang para sa Basic mga script.


Syntax:


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

Mga Parameter:

arg0[, arg1, ...] : Anumang bilang ng mga argumento ng anumang uri. Ang maximum na haba ng bawat indibidwal na argumento ay 1024 character.

Halimbawa:


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

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.


PythonShell

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.

warning

Ang pamamaraang ito ay nangangailangan ng pag-install ng APSO (Alternative Script Organizer para sa Python) extension. Ang APSO naman ay nangangailangan ng pagkakaroon ng LibreOffice Python scripting framework. Kung nawawala ang APSO o Python, magkakaroon ng error.


Syntax:

exc.PythonShell(variables: dict)

Mga Parameter:

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.

Halimbawa:

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.


    exc.PythonShell({**globals(), **locals()})
  

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.


    exc.PythonShell()
    print("Hello world!")
  

Raise

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.

note

Ang pamamaraang ito ay magagamit lamang para sa Basic mga script.


Syntax:


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

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
  

Mga Parameter:

Numero : Ang error code, bilang isang numero o bilang isang string. Ang default na halaga ay ang ng Err Pangunahing builtin na function.

note

Ang saklaw ng error code 0-2000 ay nakalaan para sa LibreOffice Basic. Maaaring magsimula ang mga error na tinukoy ng user sa mas matataas na halaga upang maiwasan ang banggaan sa LibreOffice Basic na mga pag-unlad sa hinaharap.


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.

Halimbawa:


    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 !")
  

RaiseWarning

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 .

note

Ang pamamaraang ito ay magagamit lamang para sa Basic mga script.


Syntax:


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

Mga Parameter:

Numero : Ang error code, bilang isang numero o bilang isang string. Ang default na halaga ay ang ng Err Pangunahing builtin na function.

note

Ang saklaw ng error code 0-2000 ay nakalaan para sa LibreOffice Basic. Maaaring magsimula ang mga error na tinukoy ng user sa mas matataas na halaga upang maiwasan ang banggaan sa LibreOffice Basic na mga pag-unlad sa hinaharap.


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.

Halimbawa:


    SF_Exception.RaiseWarning(Source:="Example_Raise()", _
        Description:="Something wrong happened !", _
        Number:="MyAppError")
  

Mangyaring suportahan kami!