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!