System.Xml Obor názvů
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Poskytuje podporu na základě standardů pro zpracování XML.
Třídy
| Name | Description |
|---|---|
| NameTable |
Implementuje jednovláknový XmlNameTable. |
| UniqueId |
Jedinečný identifikátor optimalizovaný pro identifikátory GUID. |
| XmlAttribute |
Představuje atribut. Platné a výchozí hodnoty atributu jsou definovány v definici typu dokumentu (DTD) nebo schématu. |
| XmlAttributeCollection |
Představuje kolekci atributů, ke kterým lze získat přístup pomocí názvu nebo indexu. |
| XmlBinaryReaderSession |
Umožňuje dynamickou správu optimalizovaných řetězců. |
| XmlBinaryWriterSession |
Umožňuje pomocí dynamického slovníku komprimovat běžné řetězce, které se zobrazují ve zprávě a udržují stav. |
| XmlCDataSection |
Představuje oddíl CDATA. |
| XmlCharacterData |
Poskytuje metody manipulace s textem, které jsou používány několika třídami. |
| XmlComment |
Představuje obsah komentáře XML. |
| XmlConvert |
Kóduje a dekóduje názvy XML a poskytuje metody pro převod mezi běžnými typy modulu runtime jazyka a typy XSD (XML Schema Definition Language Language). Při převodu datových typů jsou vrácené hodnoty nezávislé na národním prostředí. |
| XmlDataDocument |
Umožňuje, aby strukturovaná data byla uložena, načtena a manipulována prostřednictvím relačních DataSetdat . |
| XmlDeclaration |
Představuje uzel <deklarace XML ?xml version='1.0'...?>. |
| XmlDictionary |
Implementuje slovník používaný k optimalizaci implementací čtečky a zapisovače XML technologie Windows Communication Foundation (WCF). |
| XmlDictionaryReader |
Třída |
| XmlDictionaryReaderQuotas |
Obsahuje konfigurovatelné hodnoty kvót pro třídy XmlDictionaryReader. |
| XmlDictionaryString |
Představuje položku uloženou v objektu XmlDictionary. |
| XmlDictionaryWriter |
Představuje abstraktní třídu, ze které služba Windows Communication Foundation (WCF) odvozuje XmlWriter serializaci a deserializaci. |
| XmlDocument |
Představuje dokument XML. Tuto třídu můžete použít k načtení, ověření, úpravě, přidání a umístění XML v dokumentu. |
| XmlDocumentFragment |
Představuje jednoduchý objekt, který je užitečný pro operace vkládání stromu. |
| XmlDocumentType |
Představuje deklaraci typu dokumentu. |
| XmlDocumentXPathExtensions |
Poskytuje rozšiřující metody pro navigaci v XmlDocument dokumentu a XmlNode pro navigaci v dokumentu. |
| XmlElement |
Představuje prvek. |
| XmlEntity |
Představuje deklaraci entity, například <! ENTITA... >. |
| XmlEntityReference |
Představuje referenční uzel entity. |
| XmlException |
Vrátí podrobné informace o poslední výjimce. |
| XmlImplementation |
Definuje kontext pro sadu XmlDocument objektů. |
| XmlLinkedNode |
Získá uzel bezprostředně před nebo za tímto uzlem. |
| XmlNamedNodeMap |
Představuje kolekci uzlů, ke kterým lze přistupovat pomocí názvu nebo indexu. |
| XmlNamespaceManager |
Řeší, přidává a odebírá obory názvů do kolekce a poskytuje správu oborů názvů pro tyto obory názvů. |
| XmlNameTable |
Tabulka atomizovaných řetězcových objektů |
| XmlNode |
Představuje jeden uzel v dokumentu XML. |
| XmlNodeChangedEventArgs |
Poskytuje data pro události NodeChanged, , NodeInsertedNodeChangingNodeInserting, NodeRemoved a NodeRemoving události. |
| XmlNodeList |
Představuje uspořádanou kolekci uzlů. |
| XmlNodeReader |
Představuje čtečku, která poskytuje rychlý, nepřeposlaný přístup pouze k datům XML v objektu XmlNode. |
| XmlNotation |
Představuje deklaraci notace, například <! NOTACE... >. |
| XmlParserContext |
Poskytuje všechny kontextové informace vyžadované XmlReader parsováním fragmentu XML. |
| XmlProcessingInstruction |
Představuje instrukce pro zpracování, která XML definuje, aby informace specifické pro procesor zůstaly v textu dokumentu. |
| XmlQualifiedName |
Představuje kvalifikovaný název XML. |
| XmlReader |
Představuje čtenáře, který poskytuje rychlý přístup k datům XML, bez mezipaměti. |
| XmlReaderSettings |
Určuje sadu funkcí pro podporu objektu XmlReader vytvořeného metodou Create . |
| XmlResolver |
Řeší externí prostředky XML pojmenované identifikátorem URI (Uniform Resource Identifier). |
| XmlSecureResolver |
Pomáhá zabezpečit další implementaci XmlResolver zabalením objektu XmlResolver a omezením prostředků, ke kterým má podkladový XmlResolver objekt přístup. |
| XmlSignificantWhitespace |
Představuje prázdné znaky mezi značkami v uzlu smíšeného obsahu nebo prázdným místem v rámci xml:space= 'preserve' scope. Označuje se také jako významné prázdné znaky. |
| XmlText |
Představuje textový obsah prvku nebo atributu. |
| XmlTextReader |
Představuje čtenáře, který poskytuje rychlý přístup k datům XML, který není uložený v mezipaměti. Doporučujeme místo toho použít XmlReader třídu. |
| XmlTextWriter |
Představuje zapisovač, který poskytuje rychlý, nepamětný, dopředný způsob generování datových proudů nebo souborů obsahujících data XML, která odpovídají jazyku W3C Extensible Markup Language (XML) 1.0 a oborů názvů v doporučení XML. Doporučujeme místo toho použít XmlWriter třídu. |
| XmlUrlResolver |
Řeší externí prostředky XML pojmenované identifikátorem URI (Uniform Resource Identifier). |
| XmlValidatingReader |
Představuje čtečku, která poskytuje definici typu dokumentu (DTD), schéma XML-Data omezené (XDR) a ověřování jazyka XSD (XML Schema Definition Language). Tato třída je zastaralá. Doporučujeme použít XmlReaderSettings třídu a metodu Create k vytvoření validační čtečky XML. |
| XmlWhitespace |
Představuje prázdné znaky v obsahu prvku. |
| XmlWriter |
Představuje zapisovač, který poskytuje rychlý, nepamětný, dopředný způsob generování datových proudů nebo souborů obsahujících data XML. |
| XmlWriterSettings |
Určuje sadu funkcí pro podporu objektu XmlWriter vytvořeného metodou Create . |
| XmlXapResolver |
Typ XmlXapResolver se používá k překladu prostředků v balíčku XAP aplikace Silverlight. |
Rozhraní
| Name | Description |
|---|---|
| IApplicationResourceStreamResolver |
Představuje překladač datových proudů aplikace. |
| IFragmentCapableXmlDictionaryWriter |
Obsahuje vlastnosti a metody, které při implementaci pomocí XmlDictionaryWriter, umožňuje zpracování fragmentů XML. |
| IHasXmlNode |
Umožňuje třídě vrátit XmlNode z aktuálního kontextu nebo pozice. |
| IStreamProvider |
Představuje rozhraní, které lze implementovat pomocí tříd poskytujících datové proudy. |
| IXmlBinaryReaderInitializer |
Poskytuje metody pro opětovné inicializaci binární čtečky pro čtení nového dokumentu. |
| IXmlBinaryWriterInitializer |
Určuje požadavky na implementaci pro binární zapisovače XML, které jsou odvozeny z tohoto rozhraní. |
| IXmlDictionary |
Kontrakt |
| IXmlLineInfo |
Poskytuje rozhraní, které umožňuje třídě vrátit informace o řádku a pozici. |
| IXmlMtomReaderInitializer |
Určuje požadavky na implementaci pro čtenáře XML MTOM, které jsou odvozeny z tohoto rozhraní. |
| IXmlMtomWriterInitializer |
Při implementaci pomocí zapisovače MTOM toto rozhraní zajišťuje inicializaci pro zapisovač MTOM. |
| IXmlNamespaceResolver |
Poskytuje přístup jen pro čtení k sadě mapování předpon a oborů názvů. |
| IXmlTextReaderInitializer |
Určuje požadavky na implementaci pro čtečky textu XML, které jsou odvozeny z tohoto rozhraní. |
| IXmlTextWriterInitializer |
Určuje požadavky na implementaci pro zapisovače textu XML, které jsou odvozeny z tohoto rozhraní. |
Výčty
| Name | Description |
|---|---|
| ConformanceLevel |
Určuje množství vstupních nebo výstupních kontrol, které XmlReader a XmlWriter objekty provádějí. |
| DtdProcessing |
Určuje možnosti zpracování DTD. Výčet DtdProcessing používá třída XmlReaderSettings. |
| EntityHandling |
Určuje, jak XmlTextReader nebo XmlValidatingReader zpracovávají entity. |
| Formatting |
Určuje možnosti formátování pro XmlTextWriter. |
| NamespaceHandling |
Určuje, zda chcete odebrat duplicitní deklarace oboru názvů v XmlWriter. |
| NewLineHandling |
Určuje způsob zpracování konců řádků. |
| ReadState |
Určuje stav čtenáře. |
| ValidationType |
Určuje typ ověření, který se má provést. |
| WhitespaceHandling |
Určuje způsob zpracování prázdných znaků. |
| WriteState |
Určuje stav XmlWriter. |
| XmlDateTimeSerializationMode |
Určuje, jak zacházet s časovou hodnotou při převodu mezi řetězcem a DateTime. |
| XmlDictionaryReaderQuotaTypes |
Vytvoří výčet konfigurovatelných hodnot kvót pro XmlDictionaryReaders. |
| XmlNamespaceScope |
Definuje obor názvů. |
| XmlNodeChangedAction |
Určuje typ změny uzlu. |
| XmlNodeOrder |
Popisuje pořadí dokumentů uzlu v porovnání s druhým uzlem. |
| XmlNodeType |
Určuje typ uzlu. |
| XmlOutputMethod |
Určuje metodu použitou k serializaci výstupu XmlWriter. |
| XmlSpace |
Určuje aktuální rozsah |
| XmlTokenizedType |
Představuje typ XML pro řetězec. To umožňuje čtení řetězce jako konkrétního typu XML, například typu oddílu CDATA. |
Delegáti
| Name | Description |
|---|---|
| OnXmlDictionaryReaderClose |
|
| XmlNodeChangedEventHandler |
Představuje metodu, která zpracovává NodeChanged, NodeChanging, NodeInserted, NodeInsertingNodeRemoved a NodeRemoving události. |
Poznámky
Podporované standardy
Obor System.Xml názvů podporuje tyto standardy:
- XML 1.0, včetně podpory DTD
- Obory názvů XML, a to jak na úrovni datových proudů, tak dom
- Schémata XML
- Výrazy XPath
- Transformace XSLT
- DOM Level 1 Core
- DOM Level 2 Core
Viz část Rozdíly od specifikace W3C pro dva případy, ve kterých se třídy XML liší od doporučení W3C.
Asynchronní zpracování XML
System.Xml.XmlWriter Třídy System.Xml.XmlReader zahrnují řadu asynchronních metod, které jsou založeny na asynchronním programovacím modelu. Tyto metody lze identifikovat řetězcem "Async" na konci jejich názvů. Pomocí těchto metod můžete napsat asynchronní kód podobný synchronnímu kódu a stávající synchronní kód můžete snadno migrovat do asynchronního kódu.
Používejte asynchronní metody v aplikacích, u kterých je významná latence síťového datového proudu. Nepoužívejte asynchronní rozhraní API pro operace čtení a zápisu datového proudu paměti nebo místního datového proudu souborů. Vstupní datový proud XmlTextReadera XmlTextWriter měl by podporovat i asynchronní operace. V opačném případě budou vlákna stále blokovaná vstupně-výstupními operacemi.
Nedoporučujeme kombinovat synchronní a asynchronní volání funkcí, protože možná zapomenete použít
awaitklíčové slovo nebo použít synchronní rozhraní API, kde je potřeba asynchronní.Nenastavujte XmlReaderSettings.Async příznak, XmlWriterSettings.Async
truepokud nemáte v úmyslu použít asynchronní metodu.Pokud při volání asynchronní metody zapomenete zadat
awaitklíčové slovo, výsledky nejsou deterministické: Výsledek, který jste očekávali, nebo výjimku.XmlReader Když objekt čte velký textový uzel, může ukládat do mezipaměti pouze částečnou textovou hodnotu a vrátit textový uzel, takže načtení XmlReader.Value vlastnosti může být blokováno vstupně-výstupní operací. XmlReader.GetValueAsync Pomocí metody získáte textovou hodnotu v asynchronním režimu nebo použijte metodu XmlReader.ReadValueChunkAsync ke čtení velkého bloku textu v blocích.
Při použití XmlWriter objektu zavolejte metodu XmlWriter.FlushAsync před voláním XmlWriter.Close , abyste zabránili blokování vstupně-výstupní operace.
Rozdíly od specifikací W3C
Ve dvou případech, které zahrnují omezení součástí schématu skupiny modelů, System.Xml se obor názvů liší od doporučení W3C.
Konzistence v deklaraci elementů:
V některých případech platí, že při použití System.Xml skupin nahrazení implementace nevyhovuje omezení součásti schématu: Deklarace elementů konzistentní, která je popsána v části Omezení součástí schématu skupiny modelů specifikace W3C.
Například následující schéma obsahuje prvky, které mají stejný název, ale různé typy ve stejném modelu obsahu a skupiny nahrazení se používají. To by mělo způsobit chybu, ale System.Xml zkompiluje a ověří schéma bez chyb.
<?xml version="1.0" encoding="utf-8" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:element name="e1" type="t1"/>
<xs:complexType name="t1"/>
<xs:element name="e2" type="t2" substitutionGroup="e1"/>
<xs:complexType name="t2">
<xs:complexContent>
<xs:extension base="t1">
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="t3">
<xs:sequence>
<xs:element ref="e1"/>
<xs:element name="e2" type="xs:int"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
V tomto schématu typ t3 obsahuje posloupnost prvků. Z důvodu nahrazení může odkaz na prvek e1 ze sekvence vést buď k prvku e1 typu t1 , nebo prvku e2 typu t2. Druhé písmeno by vedlo k posloupnosti dvou e2 prvků, kde jeden je typu t2 a druhý je typu xs:int.
Přisuzování jedinečných částic:
Za následujících podmínek System.Xml implementace nesplňuje omezení součásti schématu: Jedinečné přisuzování částic, které je popsáno v části Omezení součástí schématu skupiny modelů specifikace W3C.
- Jeden z prvků ve skupině odkazuje na jiný prvek.
- Odkazovaný prvek je hlavním prvkem skupiny nahrazení.
- Skupina nahrazení obsahuje prvek, který má stejný název jako jeden z prvků ve skupině.
- Kardinalita elementu, který odkazuje na element head skupiny nahrazení a element se stejným názvem jako element skupiny nahrazení, není pevná (minOccurs < maxOccurs).
- Definice elementu, který odkazuje na skupinu nahrazení předchází definici prvku se stejným názvem jako element skupiny nahrazení.
Například ve schématu pod modelem obsahu je nejednoznačný a měl by způsobit chybu kompilace, ale System.Xml zkompiluje schéma bez chyb.
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:element name="e1" type="xs:int"/>
<xs:element name="e2" type="xs:int" substitutionGroup="e1"/>
<xs:complexType name="t3">
<xs:sequence>
<xs:element ref="e1" minOccurs="0" maxOccurs="1"/>
<xs:element name="e2" type="xs:int" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
<xs:element name="e3" type="t3"/>
</xs:schema>
Pokud se pokusíte ověřit následující kód XML ve schématu výše, ověření selže s následující zprávou: Element e3 má neplatný podřízený prvek e2 a XmlSchemaValidationException vyvolá se výjimka.
<e3>
<e2>1</e2>
<e2>2</e2>
</e3>
Tento problém můžete obejít tak, že v dokumentu XSD prohodíte deklarace prvků. Například:
<xs:sequence>
<xs:element ref="e1" minOccurs="0" maxOccurs="1"/>
<xs:element name="e2" type="xs:int" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
stane se tímto:
<xs:sequence>
<xs:element name="e2" type="xs:int" minOccurs="0" maxOccurs="1"/>
<xs:element ref="e1" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
Tady je další příklad stejného problému:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:element name="e1" type="xs:string"/>
<xs:element name="e2" type="xs:string" substitutionGroup="e1"/>
<xs:complexType name="t3">
<xs:sequence>
<xs:element ref="e1" minOccurs="0" maxOccurs="1"/>
<xs:element name="e2" type="xs:int" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
<xs:element name="e3" type="t3"/>
</xs:schema>
Pokud se pokusíte ověřit následující kód XML pro výše uvedené schéma, ověření selže s následující výjimkou: "Neošetřená výjimka: System.Xml.Schema.XmlSchemaValidationException: Element e2 je neplatný – hodnota abc je neplatná podle jeho datového typu 'http://www.w3.org/2001/XMLSchema:int' – Řetězec abc není platná hodnota Int32."
<e3><e2>abc</e2></e3>
Bezpečnostní aspekty
Typy a členy v System.Xml oboru názvů závisí na systému zabezpečení .NET. Následující části se týkají problémů se zabezpečením, které jsou specifické pro technologie XML.
Všimněte si také, že když používáte System.Xml typy a členy, pokud XML obsahuje data, která mají potenciální dopady na ochranu osobních údajů, musíte aplikaci implementovat způsobem, který respektuje ochranu osobních údajů koncových uživatelů.
Externí přístup
Během zpracování má několik technologií XML možnost načíst další dokumenty. Definice typu dokumentu (DTD) se může například nacházet v analyzovaném dokumentu. DTD může také žít v externím dokumentu, na který odkazuje analyzovaný dokument. Technologie XSD (XML Schema Definition Language) a XSLT mají také možnost zahrnout informace z jiných souborů. Tyto externí prostředky můžou představovat určité obavy týkající se zabezpečení. Budete například chtít zajistit, aby vaše aplikace načítala soubory jenom z důvěryhodných webů a že soubor, který načítá, neobsahuje škodlivá data.
Třída XmlUrlResolver se používá k načtení dokumentů XML a k překladu externích prostředků, jako jsou entity, DTD nebo schémata a direktivy importu nebo zahrnutí.
Tuto třídu můžete přepsat a určit objekt, XmlResolver který se má použít. Použijte třídu XmlSecureResolver, pokud potřebujete otevřít prostředek, který neřídíte, nebo který není důvěryhodný. Zabalí XmlSecureResolver a XmlResolver umožní omezit prostředky, ke kterým má podkladový zdroj XmlResolver přístup.
Odepření služby
Následující scénáře jsou považovány za méně zranitelné vůči útokům doS, protože System.Xml třídy poskytují prostředek ochrany před těmito útoky.
Analýza textových dat XML
Analýza binárních dat XML, pokud byla binární data XML generována Microsoft SQL Serverem.
Zápis dokumentů XML a fragmentů ze zdrojů dat do systému souborů, datových proudů, a TextWriternebo .StringBuilder
Načtení dokumentů do objektu MODELU DOM (Document Object Model), pokud používáte XmlReader objekt a XmlReaderSettings.DtdProcessing je nastaven na DtdProcessing.Prohibit.
Navigace v objektu DOM.
Následující scénáře se nedoporučují, pokud máte obavy o útoky na dostupnost služby nebo pokud pracujete v nedůvěryhodném prostředí.
Zpracování DTD
Zpracování schématu To zahrnuje přidání nedůvěryhodného schématu do kolekce schématu, kompilaci nedůvěryhodného schématu a ověření pomocí nedůvěryhodného schématu.
Zpracování XSLT
Parsování libovolného datového proudu zadaného uživatelem binárních dat XML
Operace MODELU DOM, jako jsou dotazování, úpravy, přesouvání dílčích stromů mezi dokumenty a ukládání objektů MODELU DOM.
Pokud máte obavy o problémy s odepřením služeb nebo pokud pracujete s nedůvěryhodnými zdroji, nepovolujte zpracování DTD. Tato možnost je ve výchozím nastavení zakázaná u XmlReader objektů, které XmlReader.Create metoda vytvoří.
Poznámka:
Ve XmlTextReader výchozím nastavení umožňuje zpracování DTD. XmlTextReader.DtdProcessing Tuto funkci můžete zakázat pomocí vlastnosti.
Pokud máte povolené zpracování DTD, můžete pomocí XmlSecureResolver třídy omezit prostředky, ke kterým XmlReader má přístup. Aplikaci můžete také navrhnout tak, aby zpracování XML bylo omezené na paměť a čas. V aplikaci ASP.NET můžete například nakonfigurovat limity časového limitu.
Důležité informace o zpracování
Vzhledem k tomu, že dokumenty XML můžou obsahovat odkazy na jiné soubory, je obtížné určit, kolik výpočetního výkonu je potřeba k analýze dokumentu XML. Například dokumenty XML můžou obsahovat DTD. Pokud DTD obsahuje vnořené entity nebo složité modely obsahu, může trvat příliš dlouho, než dokument parsuje.
Při použití XmlReadermůžete omezit velikost dokumentu, který lze analyzovat nastavením XmlReaderSettings.MaxCharactersInDocument vlastnosti. Počet znaků, které jsou výsledkem rozbalení entit, můžete omezit nastavením XmlReaderSettings.MaxCharactersFromEntities vlastnosti. Příklady nastavení těchto vlastností najdete v příslušných referenčních tématech.
Technologie XSD a XSLT mají další možnosti, které můžou ovlivnit výkon zpracování. Například je možné vytvořit schéma XML, které vyžaduje značné množství času ke zpracování při vyhodnocování v relativně malém dokumentu. Bloky skriptu je také možné vložit do šablony stylů XSLT. Oba případy představují potenciální bezpečnostní hrozbu pro vaši aplikaci.
Při vytváření aplikace, která používá XslCompiledTransform třídu, byste měli vědět o následujících položkách a jejich dopadech:
Skriptování XSLT je ve výchozím nastavení zakázané. Skriptování XSLT by mělo být povolené jenom v případě, že potřebujete podporu skriptů a pracujete v plně důvěryhodném prostředí.
Funkce XSLT
document()je ve výchozím nastavení zakázaná. Pokud funkci povolítedocument(), omezte prostředky, ke kterým je možné přistupovat předáním XmlSecureResolver objektu metodě XslCompiledTransform.Transform .Objekty rozšíření jsou ve výchozím nastavení povolené. Pokud je XsltArgumentList do metody předán XslCompiledTransform.Transform objekt obsahující rozšiřující objekty, budou použity objekty rozšíření.
Šablony stylů XSLT mohou obsahovat odkazy na jiné soubory a vložené bloky skriptů. Uživatel se zlými úmysly to může zneužít tím, že vám poskytne data nebo šablony stylů, které můžou způsobit, že systém bude zpracovávat, dokud počítač nebude mít málo prostředků.
Aplikace XSLT, které běží v prostředí hybridní důvěryhodnosti, můžou vést k falšování identity šablon stylů. Uživatel se zlými úmysly může například načíst objekt se škodlivou šablonou stylů a předat ho jinému uživateli, který metodu XslCompiledTransform.Transform následně zavolá a provede transformaci.
Tyto problémy se zabezpečením je možné zmírnit tím, že nepovolí skriptování nebo document() funkci, pokud šablona stylů nepochází z důvěryhodného zdroje a nepřijme XslCompiledTransform objekty, šablony stylů XSLT nebo zdrojová data XML z nedůvěryhodného zdroje.
Ošetření výjimek
Výjimky vyvolané komponentami nižší úrovně můžou odhalit informace o cestě, které nechcete zpřístupnit aplikaci. Vaše aplikace musí zachytit výjimky a odpovídajícím způsobem je zpracovat.