Tjenesten ScriptForge.Exception (Undtagelse)

Tjenesten Exception (undtagelse) er en samling af metoder, der hjælper med at debugge koder i Basic- og Python-sceripts og med håndtering af fejl i Basic-scripts.

I Basic-scripts hj√¶lper tjenesten Exception (undtagelse) metoderne og egenskaberne med at identificere fejlens sammenh√¶ng og tillader h√•ndtering af den, n√•r der forekommer en k√łrselsfejl.

tip

Fejl og advarsel, der er markeret af tjenesten Exception (undtagelse) gemmes i hukommelsen og kan hentes med metoden Console (konsol).


Tjenestekonsolen Exception (undtagelse) gemmer begivenheder, variable værdier og oplysninger om fejl. Brug konsollen, når BASIC-IDE er er let tilgængelig, for eksempel i Calc user defined functions ((UDF) brugerdefinerede funktioner i Calc) eller under behandlingen af hændelser.

Brug metoden DebugPrint (Fejls√łg_udskrift) for at tilf√łje relevant information til konsollen. Konsolindf√łrsler kan tilf√łje enhver relevant information til konsollen. Konsolindf√łrsler kan dumpes til en tekstfil eller visualiseres i et dialogvindue.

Når der forekommer en fejl, kan en programmakro:

  1. Rapportere fejlen i konsollen Exception (Undtagelse)

  2. Informer brugeren om fejlen med enten en standard- eller en tilpasset besked

  3. Valgfrit stoppe dens udf√łrelse

I Python-scripts bruges tjenesten Exception (undtagelse) mest til fejls√łgningsform√•l. Metoder som DebugPrint (fejls√łg_udskrift), Console (konsol) og DebugDisplay (fejls√łg_visning) er nyttige til hurtigt at udskrive beskeder, logge data og √•bne konsolvinduet fra inde fra et Python-script.

note

Ikke alle metoder og egenskaber er tilgængelige for Python-scripts, eftersom sproget Python allerede har et omfattende undtagelses-håndteringssystem.


Kald af tjeneste

I Basic

De f√łlgende eksempler viser tre forskellige tilgange til at kalde metoden Raise (S√¶t flag). Alle andre metoder kan udf√łres p√• en lignende m√•de.


    SF_Exception.Raise(...)
  

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

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

Kodestumpen herunder opretter et eksemplar af tjenesten Exception (undtagelse), loggger en besked og viser vinduet Console (konsol).


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

Egenskaber

Egenskaberne, der er oplistet herunder, er kun tilgængelige for Basic-scripts.

Navn

Skrivebeskyttet

Beskrivelse

Description

Nej

Fejlmeddelelsens tekst

Standardv√¶rdien er "" eller en streng, der indeholder Basic-udf√łrselsesmilj√łet fejlmeddelelse.

Number

Nej

Fejlens kode. Det kan være en numerisk værdi eller en tekst.

Standardv√¶rdien er 0 eller den numeriske v√¶rdi, der svarer til Basic-afviklingsmilj√łets kode.

Source

Nej

Placeringen i koden, hvor fejlen forekom. Det kan være en numerisk værdi eller en tekst.

Standardv√¶rdien er 0 eller kodelinjenummeret for Basics afviklingsmilj√łets fejl.


tip

At sætte eller rydde et Exception- (Undtagelses-)flag nulstiller dens egenskaber.


note

Fejlkode-omr√•det 0-2000 er reserveret til LibreOffice Basic. Brugerdefinerede fejl kan begynde med h√łjere v√¶rdier, for at forebygge sammenst√łd med kommende LibreOffice Basic udvikling.


Linste over metoder i tjenesten Exception (Undtagelse)

Clear
Console
ConsoleClear
ConsoleToFile

DebugDisplay
DebugPrint
PythonPrint

PythonShell
Raise
RaiseWarning


Clear

Nulstiller den aktuelle fejlstatus og rydder egenskaberne i SF_Exception (SF_Undtagelse)

note

Denne metode er kun tilgængelig for Basic-scripts.


Syntaks:


    SF_Exception.Clear()
  

Eksempel:

Det f√łlgende eksempel viser, hvordan man opfanger en undtagelse ved division-med-nul, hvis fejlkode er 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()
            'Ved division-med-nul, ignorerer du fejlen
    End Sub
  
tip

Se en komplet liste over Basic-afviklingsmilj√łets koder i Debugging (Aflusning) af et Basic-program.


Console

Vis konsolbeskederne i en modal eller ikke-modal dialog. I begge tilstande vises alle tidligere beskeder, der er udsendt af metoden DebugPrint() (AflusningsPrint()) eller af en undtagelse. I ikke-modal tilstand, tilf√łjes efterf√łlgende indf√łrsler automatisk.

Hvis konsollen allerede er åben som non-modal, sættes den forrest.

En modal konsol kan udelukkende lukkes af brugeren. En ikke-modal konsol kan lukkes enten af brugeren eller efter en makroafbrydelse.

Syntaks:

exc.Console(modal: bool = True)

Parametre:

modal: Bestemmer, om konsolvinduet er modalt (True (sand)) eller ikke-modalt (False (falsk)). Standardværdien er (True (sand).

Eksempel:

I Basic

        SF_Exception.Console(Modal := False)
  
I Python

    exc.Console(modal = False)
  

ConsoleClear

Rydder konsollen, men beholder et valgfrit antal seneste meddelelser. Hvis konsollen aktiveres i ikke-modal tilstand, genopfriskes den.

Syntaks:

exc.ConsoleClear(keep: int = 0)

Parametre:

bevar: Antallet af nylige beskeder, der skal bevares. Standarrdværdien er 0.

Eksempel:

Det f√łlgende eksempel rydder konsollen og beholder de 10 seneste meddelelser.

I Basic

        SF_Exception.ConsoleClear(10)
  
I Python

    exc.ConsoleClear(10)
  

ConsoleToFile

Eksporterer konsollens indhold til en tekstfil. Hvis filen eksisterer og konsollen ikke er tom, overskrives filen uden varsel. Returnerer True (Sand), hvis funktionen lykkes.

Syntaks:

exc.ConsoleToFile(filename: str): bool

Parametre:

filenavn: Navnet p√• tekstfilen, som konsollen skal dumpes til. Navet udtrykkes i overensstemmelse med den aktuelle FileNaming (filnavngivelse) i tjenesten SF_FileSystem (SF_Filsystem). Som standard tillades b√•de URL-notation og operativsystemets medf√łdte format.

Eksempel:

I Basic

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

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

DebugDisplay

Sammenkæder alle argumenter til en simpel menneske-læselig streng og viser den i et MsgBox (beskedfelt) med et informationsikon og en OK-knap.

Den endelige streng tilf√łjes ogs√• til konsollen.

Syntaks:

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

Parametre:

arg0[, arg1, ...]: Et vilkårligt antal argumenter af en vilkårlig type.

Eksempel:

I Basic

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

    exc.DebugDisplay("Current Value", someVar)
  

DebugPrint

Samler alle de givne argumenter til en enkelt streng, der er l√¶selig for mennesker, og tilf√łjer den som en indf√łrsel i konsollen.

Syntaks:

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

Parametre:

arg0[, arg1, ...]: Et vilkårligt antal argumenter af en vilkårlig type.

Eksempel:

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

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

PythonPrint

Displays the list of arguments in a readable form in the platform console. Arguments are separated by a TAB character (simulated by spaces).

Den samme streng tilf√łjes til ScriptForges fejlfindingskonsol.

If Python shell (APSO) is active, PythonPrint content is written to APSO console in place of the platform console.

note

Denne metode er kun tilgængelig for Basic-scripts.


Syntaks:


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

Parametre:

arg0[, arg1, ...]: Ethvert antal argumenter af vilkårlig type. Den maksimale længde på hvert individuelle argument er 1024 tegn.

Eksempel:


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

In Python use a print statement to print to the APSO console or use the DebugPrint method to print to ScriptForge's console.


PythonShell

√Öbner en APSO Python-skal som et ikke-modalt vindue. Et Python-script bliver k√łrende efter at skallen er √•bnet. Uddata fra print (udskrivnings)-udtryk i scriptet vises i skallen.

Der kan kun åbnes et enkelt eksemplar af APSO Python-skallen på et givet tidspunkt. Derfor har det ingen at kalde denne metode, hvis er allerede er åbent en Python-skal.

warning

Denne metode kræver installation af APSO (Alternative Python Script Organizer)-udvidelsen. APSOkræver på sin side tilstedeværelse af LibreOffice Python scriptrammen. Hvis APSO eller Python mangler, sker der en fejl.


Syntaks:

exc.PythonShell(variables: dict)

Parametre:

variabler: en Python-ordbog med varibelnavne og værdier, der videregives til APSO Python-skallen. Som standard videregives alle lokale variabler med Python's indbyggede funktion locals() (lokale()) .

Eksempel:

Eksemplet herunder √•bner APSO Python-skallen ved at videregive alle globale og lokale variabler med henblik p√• den kotakt, som scriptet k√łrer i.


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

N√•r APSO Python-skallen er √•ben, vises alle efterf√łlgende uddata, der udskrives af scriptet, i skallen. Derfor bliver strengen, der udskrives i eksemplet herunder, vist i Python-skallen.


    exc.PythonShell()
    print("Hallo verden!")
  

Raise

Genererer en k√łrselsfejl. Brugeren ser en fejlmeddelelse, der ogs√• rapporteres i konsollen. Udf√łrelsen stoppes. MetodenRaise() (S√¶t flag()) kan placeres inden i den almindelige skriptstr√łm eller i en dedikeret fejlh√•ndterings-rutine.

note

Denne metode er kun tilgængelig for Basic-scripts.


Syntaks:


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

De næste kodestumper er er ligeværdige. De viser alternative måder at sætte et flag på med kode 2100.


    SF_Exception.Raise(2100)
  

    SF_Exception.Number = 2100
    SF_Exception.Raise()
  

    SF_Exception.Raise Number := 2100
  

Parametre:

Number (Nummer): Fejlkoden, som et tal eller en streng. Standardværdien er den samme som i den indbyggede Basic-funktion Err (Fejl).

note

Fejlkode-omr√•det 0-2000 er reserveret til LibreOffice Basic. Brugerdefinerede fejl kan begynde med h√łjere v√¶rdier, for at forebygge sammenst√łd med kommende LibreOffice Basic udvikling.


Source (Kilde): Fejlens placering som et tal eller som en streng. Standardværdi er den samme som i den indbyggede Basic-funktion Erl (Fejl-linje).

Description (Beskrivelse): Den besked, der skal vises brugeren og rapporteres i konsollen). Standardværdi er den samme som i den indbyggede Basic-funktion Error$ (Fejl$).

Eksempel:


    Sub Example_Raise()
        Dim a, b, c
        On Local Error GoTo Catch
        Try:
            a = 10 : b = 0
            c = a / b
            '...
            Exit Sub
        Catch:
            'Se varianter herunder  ...
    End Sub
  

For sætte en undtagelse med standardværdier:


    Catch:
        SF_Exception.Raise()
  

For at sætte et undtagelsesflag med en specifik kode:


    Catch:
        SF_Exception.Raise(11)
  

For at erstatte den sædvanlige besked:


    Catch:
        SF_Exception.Raise(, , "Det er ikke en god ide at dividere med nul.")
  

For at sætte et programfejls-flag:


    Catch:
        SF_Exception.Raise("MyAppError", "Example_Raise()", "Noget er gået galt!")
  

RaiseWarning

Denne metode har n√łjagtig samme synks, argumenter og adf√¶rd som metoden Raise() (S√¶t flag()).

N√•r der imidlertid s√¶ttes et advarselsflag, stoppes makroudf√łrelsen ikke.

note

Denne metode er kun tilgængelig for Basic-scripts.


Syntaks:


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

Parametre:

Number (Nummer): Fejlkoden, som et tal eller en streng. Standardværdien er den samme som i den indbyggede Basic-funktion Err (Fejl).

note

Fejlkode-omr√•det 0-2000 er reserveret til LibreOffice Basic. Brugerdefinerede fejl kan begynde med h√łjere v√¶rdier, for at forebygge sammenst√łd med kommende LibreOffice Basic udvikling.


Source (Kilde): Fejlens placering som et tal eller som en streng. Standardværdi er den samme som i den indbyggede Basic-funktion Erl (Fejl-linje).

Description (Beskrivelse): Den besked, der skal vises brugeren og rapporteres i konsollen). Standardværdi er den samme som i den indbyggede Basic-funktion Error$ (Fejl$).

Eksempel:


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

St√łt os venligst!