Tjenesten ScriptForge.Exception (Undtagelse)

The Exception service is a collection of methods to assist in code debugging in Basic and Python scripts and in error handling in Basic scripts.

In Basic scripts, when a run-time error occurs, the methods and properties of the Exception service help identify the error context and allow to handle it.

tip

Errors and warnings raised with the Exception service are stored in memory and can be retrieved using the Console method.


The Exception service console stores events, variable values and information about errors. Use the console when the Basic IDE is not easily accessible, for example in Calc user defined functions (UDF) or during events processing.

Use the DebugPrint method to add any relevant information to the console. Console entries can be dumped to a text file or visualized in a dialog window.

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

  1. Rapportere fejlen i konsollen Exception (Undtagelse)

  2. Inform the user about the error using either a standard message or a custom message

  3. Valgfrit stoppe dens udf√łrelse

In Python scripts the Exception service is mostly used for debugging purposes. Methods such as DebugPrint, Console and DebugDisplay are useful to quickly print messages, log data and open the console window from within a Python script.

note

Not all methods and properties are available for Python scripts since the Python language already has a comprehensive exception handling system.


Kald af tjeneste

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

The code snippet below creates an instance of the Exception service, logs a message and displays the Console window.


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

Properties (Egenskaber)

The properties listed below are only available for Basic scripts.

Name (Navn)

Readonly

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

PythonShell
Raise
RaiseWarning


Clear

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

note

This method is only available 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: Determine if the console window is modal (True) or non-modal (False). Default value is True.

Eksempel:

In Basic

        SF_Exception.Console(Modal := False)
  
In 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:

keep: The number of recent messages to be kept. Default value is 0.

Eksempel:

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

In Basic

        SF_Exception.ConsoleClear(10)
  
In 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:

filename: The name of the text file the console should be dumped into. The name is expressed according to the current FileNaming property of the SF_FileSystem service. By default, URL notation and the native operating system's format are both admitted.

Eksempel:

In Basic

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

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

DebugDisplay

Concatenates all the arguments into a single human-readable string and displays it in a MsgBox with an Information icon and an OK button.

The final string is also added to the Console.

Syntaks:

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

Parametre:

arg0[, arg1, ...]: Any number of arguments of any type.

Eksempel:

In Basic

    SF_Exception.DebugDisplay("Current Value", someVar)
  
In 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, ...]: Any number of arguments of any type.

Eksempel:

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

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

PythonShell

Opens an APSO Python shell as a non-modal window. The Python script keeps running after the shell is opened. The output from print statements inside the script are shown in the shell.

Only a single instance of the APSO Python shell can be opened at any time. Hence, if a Python shell is already open, then calling this method will have no effect.

warning

This method requires the installation of the APSO (Alternative Script Organizer for Python) extension. If it is not installed, an error will occur.


note

This method is only available for Python scripts.


Syntaks:

exc.PythonShell(variables: dict)

Parametre:

variables: a Python dictionary with variable names and values that will be passed on to the APSO Python shell. By default all local variables are passed using Python's builtin locals() function.

Eksempel:

The example below opens the APSO Python shell passing all global and local variables considering the context where the script is running.


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

When the APSO Python shell is open, any subsequent output printed by the script will be shown in the shell. Hence, the string printed in the example below will be displayed in the Python shell.


    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

This method is only available 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).

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

To raise an exception with a specific code:


    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

This method is only available 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).

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!