Słužba ScriptForge.Exception (SF_Exception)

Wobsah

# Słužba ScriptForge.Exception

Słužba Exception je zběrka metodow, kotrež při pytanju za zmylkami w kodźe skriptow Basic a Python a při wobchadźenju ze zmylkami w skriptach Basic pomhaja.

Hdyž w skriptach Basic wuwjedźenskočasowy zmylk nastawa, pomhaja metody a kajkosće słužby Exception zmylkowy kontekst identifikować a dowolić, z nim wobchadźeć.

- Słužba SF_Exception je na objekt VBA Err podobna.

- Kajkosć Number zmylk identifikuje.

- Wužiwajće metodu Raise, zo byšće předźěłanje přetorhnył. Metoda RaiseWarning da so wužiwać, zo byšće anomaliju wotpopadnył, bjeztoho zo byšće wuwjedźenje makra přetorhnył.

Přez słužbu Exception wuwabjene zmylki a warnowanja so w składźe składuja a dadźa so z pomocu metody Console wotwołać.

Konsola słužby Exception podawki, wariablowe hódnoty a informacije wo zmylkach składuje. Wužiwajće konsolu, hdyž Basic IDE lochko přistupny njeje, na přikład w swójskich funkcijach Calc (UDF) abo za předźěłowanje podawkow.

Wužiwajće metodu DebugPrint, zo byšće konsoli relewantne informacije přidał. Konsolowe zapiski dadźa so do tekstoweje dataje wudać abo w dialogowym woknje wizualizować.

Hdyž zmylk nastawa, móže nałoženske makro:

1. Zmylk w konsoli Exception zdźělić

2. Wužiwarja wo zmylku z pomocu standardneje abo swójskeje powěsći informować

3. Na přeće wuwjedźenje zastajić

Hdyž so zmylk we wuwołanju API ScriptForge namaka, so zadźerženje nałoženja po wěstych kajkosćach postaja:

1. Protokolujće zmylk we wuwzaćowej konsoli. To so přeco čini.

2. Informujće wužiwarja wo zmylku pak ze standardnej pak z lokalizowanej powěsću.

   Zo byšće ćichi modus wunuzował, stajće:

   exception.ReportScriptErrors = False ' Default = True

3. Zo njebyšće wuwjedźenje aktualneho makra zastajił, stajće:

   exception.StopWhenError = False ' Default = True

   Potom ma zmysł, hódnoty wuslědźić, prjedy hač so z předźěłanjom pokročuje:

   exception.ReturnCode ' Short error description

   exception.ReturnCodeDescription ' Long error description

W skriptach Python so słužba Exception zwjetša za zaměry pytanja zmylkow wužiwa. Metody kaž DebugPrint, Console a DebugDisplay su wužitne, zo bychu spěšnje zdźělenki ćišćeli, daty protokolowali a konsolowe wokno ze skripta Python wočinili.

Nic wšě metody a kajkosće su za skripty Python k dispoziciji, dokelž rěč Python hižo ma wobšěrny system za wobchadźenje z wuwzaćemi.

## Słužbowe wuwołanje

Před wužiwanjom słužby Exception dyrbi so biblioteka ScriptForge začitać abo importować:

• Makra Basic sej wužaduja, zo so biblioteka ScriptForge z pomocu slědowaceho přikaza začituje:
GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
• Skripty Python sej import z modula scriptforge wužaduja:
from scriptforge import CreateScriptService

##### W Basic

Slědowace přikłady tři rozdźělne móžnosće pokazuja, zo bychu metodu Raise wuwołali. Wšě druhe metody dadźa so na podobne wašnje wuwjesć.

        SF_Exception.Raise(...)

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

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

##### W Python

Slědowaca kodowa šlipka instancu słužby Exception wutworja, protokoluje zdźělenku a pokazuje konsolowe wokno.

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

## Kajkosće

Kajkosće, kotrež su deleka nalistowane, su jenož w skriptach Basic k dispoziciji. Zwisuja ze zmylkami, kotrež w makrowej instrukciji wustupuja.

Mjeno | Přećiwo pisanju škitany | Wopisanje
--- | --- | ---
Description | Ně | Tekst zmylkoweje zdźělenki. Standardna hódnota je "" abo znamješkowy rjećazk, kotryž wuwjedźenskočasowu zmylkowu zdźělenku Basic wobsahuje.
Number | Ně | Kod zmylka. Móže numeriska hódnota abo tekst być. Standardna hódnota je 0 abo numeriska hódnota, kotraž kodej wuwjedźenskočasoweho zmylka wotpowěduje.
Source | Ně | Městno w kodźe, hdźež zmylk je nastał. Móže numeriska hódnota abo tekst być. Standardna hódnota je 0 abo čisło kodoweje linki za standardny wuwjedźenskočasowy zmylk Basic.

Wuwabjenje abo zhašenje Exception jeho kajkosće wróćo staji.

Error code range 0-2000 is reserved for LibreOfficeDev Basic. User-defined errors may start from higher values in order to prevent collision with LibreOfficeDev Basic future developments.

Kajkosće, kotrež si deleka nalistowane, su za skripty Basic a Python k dispoziciji. Zwisuja ze zmylkami, kotrež so jenož přez API ScriptForge namakaja.

Mjeno | Přećiwo pisanju škitany | Typ wróćenja | Wopisanje
--- | --- | --- | ---
ReportScriptErrors | Ně | Boolean | Podawa, hač so skriptowe zmylki w zdźělenskim polu pokazuja, hdyž wustupuja. Standardna hódnota je False.
ReturnCode | Haj | Znamješkowy rjećazk | Kod, kotryž so přez poslednje wuwołanje API ScriptForge z wužiwarskeho skripta wróća. Je znamješkowy rjećazk z nulowej dołhosću, jeli so wšitko bjez zmylka wuwjedźe.
ReturnCodeDescription | Haj | Znamješkowy rjećazk | Wopisanje koda, kotryž so přez poslednje wuwołanje API ScriptForge z wužiwarskeho skripta wróća. Je znamješkowy rjećazk z nulowej dołhosću, jeli so wšitko bjez zmylka wuwjedźe.
StopWhenError | Ně | Boolean | Podawa, hač so makro zastaja, hdyž ScriptForge zmylk wužiwarskeho skripta namaka.

Lisćina metodow w słužbje Exception
Clear Console ConsoleClear ConsoleToFile | DebugDisplay DebugPrint PythonPrint | PythonShell Raise RaiseWarning

## Clear

Staji aktualny zmylkowy status wróćo a zhaša kajkosće SF_Exception.

This method is only available for Basic scripts.

### Syntaksa:

        SF_Exception.Clear()

### Přikład:

Slědowacy přikład pokazuje, kak so wuwzaće diwizije přez nulu wotpopaduje, kotrejež zmylkowy kod je 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()
                ' Ignoruje zmylk, jeli diwizija přez nulu
        End Sub

Za dospołnu lisćinu wuwjedźenskočasowych zmylkowych kodo hlejće Program Basic za zmylkami přepytać.

## Console

Pokazuje konsolowe zdźělenki w modalnym abo njemódalnym dialogu. We woběmaj metodomaj so wšě zańdźene zdźělenki pokazuja, kotrež su so přez metodu DebugPrint() wudawali abo z wuwzaća rezultuja. W njemodalnym modusu so na so sćěhowace zapiski awtomatisce přidawaja.

Jeli konsola je hižo wočinjena, so do prědka přinjese, hdyž je njemodalna.

Modalna konsola da so jenož wot wužiwarja začinić. Njemodalna konsola da so pak wot wužiwarja pak při kónčenju makra začinić.

### Syntaksa:

exc.Console(modal: bool = True)

### Parametry:

modal: Postaja, hař konsolowe wokno je modalne (True) abo njemodalne (False). Standardna hódnota je True.

### Přikład:

##### W Basic

            SF_Exception.Console(Modal := False)

##### W Python

        exc.Console(modal = False)

## ConsoleClear

Zhaša konsolu a wobchowuje opcionalnu ličbu najnowšich zdźělenkow. Konsola so aktualizuje, jeli je w njemodalnym modusu zaktiwizowana.

### Syntaksa:

exc.ConsoleClear(keep: int = 0)

### Parametry:

keep: Ličba najnowšich zdźělenkow, kotrež so maja wobchować. Standardna hódnota je 0.

### Přikład:

Slědowacy přikład konsolu prózdni a wobchowuje 10 najnowšich zdźělenkow.

##### W Basic

            SF_Exception.ConsoleClear(10)

##### W Python

        exc.ConsoleClear(10)

## ConsoleToFile

Eksportuje wobsah konsole do tekstoweje dataje. Jeli dataja hižo eksistuje a konsola prózdna njeje, přepisuje so bjez warnowanja. Wróći True, jeli je wuspěšna.

### Syntaksa:

exc.ConsoleToFile(filename: str): bool

### Parametry:

filename: Mjeno tekstoweje dataje, do kotrejež so ma konsola składować. Mjeno so po aktualnej kajkosći FileNaming słužby SF_FileSystem zwuraznja. Po standardźe stej notacija URL a natiwny format dźěłoweho systema dowolenej.

### Přikład:

##### W Basic

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

##### W Python

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

## DebugDisplay

Zwjazuje wšě argumenty do wot čłowjeka čitajomneho znamješkoweho rjećazka a pokazuje jón w MsgBox z informaciskim symbolom a tłóčatkom W porjadku.

Kónčny znamješkowy rjećazk so tež do konsole přidawa.

### Syntaksa:

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

### Parametry:

arg0[, arg1, ...]: Někajka ličba argumentow někajkeho typa.

### Přikład:

##### W Basic

        SF_Exception.DebugDisplay("Current Value", someVar)

##### W Python

        exc.DebugDisplay("Current Value", someVar)

## DebugPrint

Zjima wšě podate argumenty k jednotliwemu wot čłowjeka čitajomnemu znamješkowemu rjećazkej a přidawa jón jako nowy zapisk w konsoli.

### Syntaksa:

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

### Parametry:

arg0[, arg1, ...]: Někajka ličba argumentow někajkeho typa.

### Přikład:

##### W 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

##### W Python

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

## PythonPrint

Pokazuje lisćinu argumentow w čitajomnej formje w konsoli platformy. Argumenty so přez tabulator (↹) wotdźěleja (simulowany přez mjezoty).

Samsny znamješkowy rjećazk so konsoli ScriptForge za pytanje zmylkow přidawa.

Jeli shell Python (APSO) je aktiwny, so wobsah PythonPrint do konsole APSO město do konsole platformy pisa.

This method is only available for Basic scripts.

### Syntaksa:

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

### Parametry:

arg0[, arg1, ...]: Někajka ličba argumentow někajkeho typa. Maksimalna dołhosć kóždeho jednotliweho argumenta je 1024 znamješkow.

### Přikład:

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

Wužiwajće přikaz print w Python, zo byšće konsolu APSO ćišćał abo wužiwajće metodu DebugPrint, zo byšće konsolu ScriptForge ćišćał.

## PythonShell

Wočinja shell APSO Python jako njemodalne wokno. Skript Python so dale wuwjedźe, hdyž shell je wočinjeny. Wudaće z přikazow print w skripće so w shellu pokazuja.

Jenož jednotliwa instanca shella APSO Python da so kóždy čas wočinić. Tohodla so potom wuwołanje tuteje metody so njewuskutkuje, jeli shell Python je hižo wočinjeny.

This method requires the installation of the APSO (Alternative Script Organizer for Python) extension. In turn APSO requires the presence of LibreOfficeDev Python scripting framework. If APSO or Python are missing, an error occurs.

### Syntaksa:

exc.PythonShell(opt variables: dict, background = 0xFDF6E3, foreground = 0x657B83)

### Parametry:

variables: słownik Python z wariablowymi mjenami a hódnotami, kotrež so do shella APSO Pythan přepodawaja. Po standardźe so wšě lokalne wariable z pomocu zatwarjeneje funkcije locals() Python přeopodawaja.

background: Pozadkowa barba konsole, podata jako cyłoličbowa 24-bitowa jódnota RGB. Standardny pozadk je pozadk APSO.

foreground: Prědkowa barba konsole, podata jako cyłoličbowa 24-bitowa hódnota RGB. Standardny prědk je prědk APSO.

### Přikład:

Slědowacy přikład shell APSO Python wočinja a přepodawa wšě globalne a lokalne wariable dźiwajo na kontekst, w kotrymž so skript běži. Konsola so z běłymi znamješkami na čornym pozadku pokazuje.

        exc.PythonShell({**globals(), **locals()}, \
            background = 0x0, foreground = 0xFFFFFF)

Hdyž shell APSO Python je wočinjeny, so naslědne wudaće, kotrež přez skript ćišći, w shellu pokazuje. Tohodla so znamješkowy rjećazk, kotryž w slědowacym přikładźe ćišći, w shellu Python pokazuje.

        s = CreateScriptService('Basic')
        RED, BLUE = s.RGB(255,0,0), s.RGB(0,0,255)
        exc.PythonShell(background=RED, foreground=BLUE)
        print("Witaj swět!")

## Raise

Generuje wuwjedźenskočasowy zmylk. Zmylkowa zdźělenka so wužiwarjej pokazuje a w konsoli zdźěla. Wuwjedźenje so zastaji. Metoda Raise() da so w normalnym skriptowym wotběhu abo w dedikowanej rutinje za wobchadźenje ze zmylkami.

This method is only available for Basic scripts.

### Syntaksa:

        SF_Exception.Raise(Number := Err, [Source := Erl], [Description := Error$])

Prezentowane kodowe šlipki su runohódne. Pokazuja alternatiwne móžnosće za wuwabjenje wuwzaća z kodom 2100.

        SF_Exception.Raise(2100)

        SF_Exception.Number = 2100
        SF_Exception.Raise()

        SF_Exception.Raise Number := 2100

### Parametry:

Number: Zmylkowy kod, jako ličba abo znamješkowy rjećazk. Standardna hódnota je hódnota zatwarjeneje funkcije Err Basic. W tutym padźe je Number opcionalny.

Error code range 0-2000 is reserved for LibreOfficeDev Basic. User-defined errors may start from higher values in order to prevent collision with LibreOfficeDev Basic future developments.

Source: Městno zmylka, jako ličba abo znamješkowy rjećazk. Standardna hódnota je hódnota zatwarjeneje funkcije Erl Basic.

Description: Powěsć, kotraž so ma wužiwarjej pokazać a w konsoli zdźělił. Standardna hódnota je hódnota zatwarjenje funkcije Error$ Basic.

### Přikład:

        Sub Example_Raise()
            Dim a, b, c
            On Local Error GoTo Catch
            Try:
                a = 10 : b = 0
                c = a / b
                '...
                Exit Sub
            Catch:
                ' Hlej warianty deleka …
        End Sub

Zo byšće wuwzaće ze standardnymi hódnotami wuwabił:

        Catch:
            SF_Exception.Raise()

Zo byšće wuwzaće z wěstym kodom wuwabił:

        Catch:
            SF_Exception.Raise(11)

Zo byšće zwučenu powěsć wuměnił:

        Catch:
            SF_Exception.Raise(, , "Njeje dobra ideja, přez nulu dźělić.")

Zo byšće nałoženski zmylk wuwabił:

        Catch:
            SF_Exception.Raise("MyAppError", "Example_Raise()", "Něšto je so nimokuliło!")

## RaiseWarning

Tuta metoda ma dokładnje samsnu syntaksu, argumenty a zadźerženje kaž metoda Raise().

Ale hdyž so warnowanje wudawa, so wuwjedźenje makra njezastaji.

This method is only available for Basic scripts.

### Syntaksa:

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

### Parametry:

Number: Zmylkowy kod, jako ličba abo znamješkowy rjećazk. Standardna hódnota je hódnota zatwarjeneje funkcije Err Basic. W tutym padźe je Number opcionalny.

Error code range 0-2000 is reserved for LibreOfficeDev Basic. User-defined errors may start from higher values in order to prevent collision with LibreOfficeDev Basic future developments.

Source: Městno zmylka, jako ličba abo znamješkowy rjećazk. Standardna hódnota je hódnota zatwarjeneje funkcije Erl Basic.

Description: Powěsć, kotraž so ma wužiwarjej pokazać a w konsoli zdźělił. Standardna hódnota je hódnota zatwarjenje funkcije Error$ Basic.

### Přikład:

        SF_Exception.RaiseWarning(Source:="Example_Raise()", _
            Description:="Něšto je so nimokuliło!",_
            Number:="MyAppError")

Podobne temy

Error-Handling Functions

Prošu podpěrajće nas!