Blame programming-guidelines/cs/gerror.page

Packit 1470ea
Packit 1470ea
<page xmlns="http://projectmallard.org/1.0/" xmlns:its="http://www.w3.org/2005/11/its" xmlns:xi="http://www.w3.org/2003/XInclude" type="topic" id="gerror" xml:lang="cs">
Packit 1470ea
Packit 1470ea
  <info>
Packit 1470ea
    <link type="guide" xref="index#specific-how-tos"/>
Packit 1470ea
Packit 1470ea
    <credit type="author copyright">
Packit 1470ea
      <name>Philip Withnall</name>
Packit 1470ea
      <email its:translate="no">philip.withnall@collabora.co.uk</email>
Packit 1470ea
      <years>2015</years>
Packit 1470ea
    </credit>
Packit 1470ea
Packit 1470ea
    <include xmlns="http://www.w3.org/2001/XInclude" href="cc-by-sa-3-0.xml"/>
Packit 1470ea
Packit 1470ea
    <desc>Obsluha a hlášení běhových chyb</desc>
Packit 1470ea
  </info>
Packit 1470ea
Packit 1470ea
  <title>GError</title>
Packit 1470ea
Packit 1470ea
  <section id="gerror-usage">
Packit 1470ea
    <title>Použití GError</title>
Packit 1470ea
Packit 1470ea
    

<link href="https://developer.gnome.org/glib/stable/glib-Error-Reporting.html">GError</link> je standardní mechanizmus hlášení chyb pro kód používající GLib a může na něj být pohlíženo jako na implementaci <link href="https://cs.wikipedia.org/wiki/V%C3%BDjimka_(programov%C3%A1n%C3%AD)">výjimek</link> v jazyce C.

Packit 1470ea
Packit 1470ea
    

Libovolný druh selhání za běhu (cokoliv, co není <link xref="preconditions">programová chyba</link>) musí být obslouženo vložením parametru GError** do funkce a před návratem z funkce nastavením vhodného a smysluplného popisu selhání v GError. Programové chyby se naopak pomocí GError obsluhovat nesmí: místo toho použijte assertion a podmíněné testy před a po.

Packit 1470ea
Packit 1470ea
    

Použití GError byste měli dávat přednost před prostým návratem kódu, protože poskytuje více informací a navíc je podporován všemi nástroji GLib. Například <link xref="introspection">introspekce API</link> bude automaticky detekovat všechny parametry GError, protože je pak umí převést na výjimky v jiných jazycích.

Packit 1470ea
Packit 1470ea
    

Výpis varování do konzole se nesmí provádět v programovém kódu knihovny. Použijte GError a volající kód jej může propagovat dále, rozhodnout se jej zpracovat nebo se rozhodnout jej vypsat do konzole. V ideálním případě je jediným kódem, který vypisuje do konzole, programový kód nejvyšší úrovně aplikace a ne kód knihovny.

Packit 1470ea
Packit 1470ea
    

Volání kterékoliv funkce, které přebírá GError**, by mělo takovýto parametr poskytnout a pak příslušně obsloužit vrácený GError. Je jen velmi málo situací, kdy je přijatelné potenciální chybu ignorovat předáním NULL do parametru GError**.

Packit 1470ea
Packit 1470ea
    

Dokumentace k API knihovny GLib obsahuje <link href="https://developer.gnome.org/glib/stable/glib-Error-Reporting.html#glib-Error-Reporting.description">uceleného průvodce použitím GError</link>.

Packit 1470ea
  </section>
Packit 1470ea
</page>