16/04/20151 Výjimky a zpracování chyb (1) Výjimky (exceptions) dovolují tvorbu progra- mů, které mohou reagovat na různé chybové stavy vzniklé v jeho průběhu.

Slides:



Advertisements
Podobné prezentace
(instance konkrétní třídy)
Advertisements

Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
Programování v C jazyku - SEMINÁŘ
Pascal - příklady.
VISUAL BASIC Práce se soubory.
ÚVOD DO CPP 7 Dědičnost - pokračování
Algoritmy I. Cvičení č. 10.
Práce se soubory. Ukládání dat Textové soubory s jednoduchou strukturou (např..txt a.csv) textové soubory s vnitřní hierarchií (např..xml) Soubory binárního.
Počítače a programování 1. Obsah přednášky Výjimky - základní typy výjimek Způsoby zpracování výjimek.
C# pro začátečníky Mgr. Jaromír Osčádal
Programování v C++ Cvičení.
Vyučovací hodina 1 vyučovací hodina: Opakování z minulé hodiny 5 min Nová látka 20 min Procvičení nové látky 15 min Shrnutí 5 min 2 vyučovací hodiny: Opakování.
Štěpán Lískovec, 4.A.  =základní programové vybavení počítače (tj.software)  hlavní úkol:  A, zajistit uživateli možnost ovládat PC  B, vytvořit pro.
C# - Exceptions (výjimky)
Objektové programování
Seminář C cvičení Obsluha výjimek Ing. Jan Mikulka.
08/04/20151 Delegáty (1) Delegát (delegate) je datový typ, který definuje signaturu metody Delegáty bývají rovněž označovány jako typo- vě bezpečné ukazatele.
C# - Úvod Centrum pro virtuální a moderní metody a formy vzdělávání na Obchodní akademii T.G. Masaryka, Kostelec nad Orlicí.
Alg91 Textové soubory Na rozdíl od jiných typů souborů jsou textové soubory určené pro gramotné lidské oko. Textový soubor je posloupnost znaků členěná.
Počítače a programování 1
3. Příkazy  Příkazy dělíme na jednoduché a strukturované.  Jednoduché příkazy - žádnou jejich dílčí částí neni příkaz - přiřazovací, vstupu a výstupu,
Představujeme Ensemble Michal Tomek. Na tomto obrázku vidíte, co systému Ensemble chybí:
C# - Testování a ladění aplikací Centrum pro virtuální a moderní metody a formy vzdělávání na Obchodní akademii T.G. Masaryka, Kostelec nad Orlicí.
KIV/PPA1 cvičení 10 Cvičící: Pavel Bžoch. Osnova cvičení Výjimky a práce s nimi Nácvik na online test.
C# - předávání parametrů Centrum pro virtuální a moderní metody a formy vzdělávání na Obchodní akademii T.G. Masaryka, Kostelec nad Orlicí.
UNIX — doplňky Informatika pro ekonomy II přednáška 9.
Tento výukový materiál vznikl v rámci Operačního programu Vzdělávání pro konkurenceschopnost 1. KŠPA Kladno, s. r. o., Holandská 2531, Kladno,
12/04/20151 Kolekce (1) Kolekce (collection) představují standardní datové struktury (seskupení) prvků (objektů) Jsou definovány ve jmenném prostoru System.Collections.
7. Typ soubor Souborem dat běžně rozumíme uspořádanou množinu dat, uloženou mimo operační paměť počítače (na disku). Pascalský soubor je abstrakcí skutečného.
VISUAL BASIC PRALG. 19. Chyby a ladění programu Kompilační chyby - chybná syntaxe, neexistující objekt, chybný parametr,... Run-time chyby - dochází k.
Gymnázium prof. Jana Patočky Jindřišská Praha 1 „Praha & EU: Investujeme do vaší.
13/04/20151 Indexery (1) Členy třídy (struktury) umožňující třídě (struk- tuře) používat hranaté závorky a pracovat s ní podobně jako s polem (používat.
13/04/20151 Datový typ třída – class (1) Datový typ definovaný uživatelem Poskytuje mechanismus pro modelování entit, s nimiž manipulují aplikace Charakterizuje.
POWER POINT 1 Základní pojmy Power Point - základní pojmy.
Šesté cvičení Výjimky Balíky.
Principy OOP Objektově orientované programování vychá-zí ze třech základních principů (rysů): zapouzdření (encapsulation) dědičnost (inheritance) polymorfismus.
1 Počítače a programování 1 13.přednáška. 2 Obsah přednášky Vstupy a výstupy – 1.část.
C# - konverze datových typů Centrum pro virtuální a moderní metody a formy vzdělávání na Obchodní akademii T.G. Masaryka, Kostelec nad Orlicí.
Problémy s češtinou České znaky se standardně nepovažují za alfanumerické znaky (\w) Vadí to při třídění vyhodnocování regulárních výrazů Je třeba použít.
Počítače a programování 1 7.přednáška. Základy Pole ve třídách a metodách Pole Arrays.
Výrok „Vypadá to, že jsme narazili na hranici toho, čeho je možné dosáhnout s počítačovými technologiemi. Člověk by si ale měl dávat pozor na takováto.
OPERAČNÍ SYSTÉMY.
JUI přednáška Vstup a výstup, cykly RNDr. Jiří Dvořák, CSc.
Soubory BI-PA1 Programování a algoritmizace 1, ZS Katedra teoretické informatiky © Miroslav Balík Fakulta informačních technologií České vysoké.
Jazyk C A0B36PRI - PROGRAMOVÁNÍ Část II.
Vícerozměrná pole (1) Jazyk C povoluje, aby pole mělo více rozměrů (dimenzí) než jeden Z vícerozměrných polí bývá nejčastěji použí-váno pole dvourozměrné.
23/04/20151 LINQ (1) LINQ (Language Integrated Query) je součást MS.NET Frameworku umožňující jednotný přístup k datům a jejich zpracování deklarativ-
Základy programování mikropočítačů První program v jazyce symbolických adres.
Batové dávky Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Vojtěch Mrózek. Dostupné z Metodického portálu ISSN: ,
NÁZEV ŠKOLY: Střední odborná škola Net Office, spol. s r.o., Orlová-Lutyně AUTOR: Ing. Adéla Tomalová NÁZEV: Podpora výuky v technických oborech TEMA:
Makra v Excelu syntaxe. Zápis nahraného makra SubEnd Sub O klíčová slova Sub a End Sub – začátek a konec makra O komentáře O text za znakem ', až do konce.
NÁZEV ŠKOLY:SOŠ Net Office, spol. s r.o. Orlová Lutyně
Vypracoval / Roman Málek
Typ struktura (1) Datový typ struktura (struct) je agrego-vaný heterogenní datový typ Jedná se o skupinu několika proměnných, které mohou mít různé datové.
Moduly.
Vícerozměrná pole (1) Jazyk C povoluje, aby pole mělo více rozměrů (dimenzí) než jeden Z vícerozměrných polí bývá nejčastěji použí-váno pole dvourozměrné.
Úvod do Pythonu – IO operace se soubory.
Vlastnosti souborů Jaroslava Černá.
Dialogová okna (1) Realizována pomocí třídy Form
Metody s proměnným počtem parametrů
NÁZEV ŠKOLY: Střední odborná škola Net Office, spol. s r. o
ZAL – 3. cvičení 2016.
Výukový materiál zpracován v rámci projektu
Typový příklad 3 – zadání 1
Funkce výstupu (2) Funkce printf: deklarována v: stdio.h
Příkazy cyklu (1) Umožňují vícekrát (nebo ani jednou) pro-vést určitý příkaz Jazyk C rozlišuje příkaz cyklu: s podmínkou na začátku: obecný tvar: while.
Oblast platnosti identifikátoru (1)
C# přehled vlastností.
Cyklus for (1) Obecný tvar: for (výraz1; výraz2; výraz3) příkaz
NÁZEV ŠKOLY: S0Š Net Office, spol. s r.o., Orlová-Lutyně
Transkript prezentace:

16/04/20151 Výjimky a zpracování chyb (1) Výjimky (exceptions) dovolují tvorbu progra- mů, které mohou reagovat na různé chybové stavy vzniklé v jeho průběhu Cílem výjimek je učinit programy robustnější tím, že jsou rozšířeny o schopnosti správy chyb vzniklých na úrovni aplikace nebo operačního systému Výjimky v jazyku C#: –jsou objektově orientované –oddělují zpracování chyb od výkonného kódu –nejsou hlídané (checked) –by měly být dokumentovány v XML

16/04/20152 Výjimky a zpracování chyb (2) Každá výjimka v jazyku C# je: –objekt –odvozena z třídy Exception nebo z některé z je- jich následníků –obsahuje informace o: svém původu důvodu vzniku Pomocí zachycení výjimky je možné nastalý (chybový) stav zpracovat (obsloužit) Jestliže dojde ke vzniku výjimky, která není ni- jak obsloužena, pak dochází k ukončení progra- mu s odpovídající běhovou chybou

16/04/20153 Třída Exception (1) Definována ve jmenném prostoru System Reprezentuje chyby, ke kterým dochází v době běhu programu Slouží jako výchozí třída pro všechny další vý- jimky Definuje např. vlastnosti: –Message : vrací řetězec (text) popisující vzniklou výjimku je nastavena jako parametr konstruktoru –Source : vrací nebo nastavuje jméno aplikace nebo objektu, který výjimku vyvolal

16/04/20154 Třída Exception (2) –StackTrace : vrací stav zásobníku v době vzniku výjimky posloupnost metod, které vedly k vyvolání výjimky příklad (zaformátováno): at Excep.Program.Div(Int32 a, Int32 b) in c:\Excep\Excep\Program.cs:line 17 at Excep.Program.Main(String[] args) in c:\Excep\Excep\Program.cs:line 27 poznámka: program musí být přeložený v režimu debug –HelpLink : vrací nebo nastavuje URL na soubor popisující chybu –InnerException : obsahuje informace o předcházející výjimce, která způso- bila současnou výjimku předcházející výjimka je zaznamenána předáním (jako pa- rametr) konstruktoru současné výjimky

16/04/20155 Rozdělení výjimek Výjimky v.NET Frameworku byly původně roz- dělovány do dvou skupin, jimž odpovídají třídy (potomci třídy Exception ): –SystemException : pro výjimky CLR (Common Language Runtime), tj. pro běhové prostředí (součást.NET Frameworku), které se sta- rá o spouštění programů, správu paměti, typovou bezpeč- nost nebo o výjimky –ApplicationException : pro výjimky uživatelských aplikací Zmíněné: –rozdělení dnes často není dodržováno ani v BCL –třídy zůstávají zachovány pro zpětnou kompatibiltu

16/04/20156 Typy výjimek (1) Třídy reprezentující výjimky pro parametry: –ArgumentException : potomek třídy SystemException byl předán parametr s neplatnou hodnotou pomocí vlastnosti ParamName lze zjistit jméno paramet- ru, který tuto výjimku způsobuje –ArgumentNullException : potomek třídy ArgumentException metodě byl předán parametr s hodnotou null, přičemž tato metoda jej neakceptuje jako platný parametr –ArgumentOutOfRangeException : potomek třídy ArgumentException hodnota parametru je mimo povolený rozsah

16/04/20157 Typy výjimek (2) Třídy pro aritmetické výjimky: –ArithmeticException : potomek třídy SystemException nastala chyba při aritmetické operaci nebo při převodu –DivideByZeroException : potomek třídy ArithmeticException došlo k dělení nulou –OverflowException : potomek třídy ArithmeticException aritmetická operace nebo převod skončil přetečením vý- sledku

16/04/20158 Typy výjimek (3) vznik přetečení není standardně hlídán hlídání přetečení lze zapnout, resp. vypnout –v nastavení projektu –pomocí klíčových slov checked, resp. unchecked –příklad: int x = int.MaxValue; checked { x++; //vyvolá výjimku OverflowException } int x = int.MaxValue; unchecked { x++; //nevyvolá výjimku OverflowException }

16/04/20159 Typy výjimek (4) Třídy pro výjimky při provádění I/O operací (de- finovány ve jmenném prostoru System.IO ): –IOException : potomek třídy SystemException bázová třída pro chyby při zpracování vstupu a výstupu –FileNotFoundException : potomek třídy IOException vzniká při pokusu o zpřístupnění neexistujícího souboru –PathTooLongException : potomek třídy IOException dochází k ní jestliže cesta nebo název souboru je delší než systémem definované maximum

16/04/ Typy výjimek (5) Další třídy reprezentující výjimky (odvozeny od třídy SystemException ): –InvalidOperationException : metodu není možné spustit, protože objekt není ve valid- ním stavu například zápis do proudu, který ještě nebyl otevřen –FormatException : formát vstupu neodpovídá požadavkům příklad: int.Parse("Program") může být vyvolána i např. v případě čtení ze souboru nebo zařízení –IndexOutOfRangeException : pokus o manipulaci v poli s prvkem, jehož index je mimo rozsah pole

16/04/ Typy výjimek (6) –NullReferenceException : pokus se o dereferencování objektu, který je null například pokus o vyvolání jeho metody aplikace by neměla tuto výjimku vyvolávat –InvalidCastException : vzniká při pokusu o neplatné přetypování příklad: (int) "Program" aplikace by neměla tuto výjimku vyvolávat –OutOfMemoryException : není dostatek paměti pro pokračování programu aplikace by neměla tuto výjimku vyvolávat ani zachytávat

16/04/ Typy výjimek (7) –StackOverflowException : došlo k přetečení prováděcího zásobníku (obvykle příliš mnoho volaných metod) aplikace by neměla tuto výjimku vyvolávat ani zachytávat příklad: public string BadProperty { get { return badProperty; } set //StackOverflowException { BadProperty = value; } }

16/04/ Práce s výjimkami (1) Nově vytvářená výjimka (třída reprezentující výjimku) by měla: –být odvozena od třídy Exception nebo od nějaké- ho následníka třídy Exception –implementovat alespoň 4 základní konstruktory jako třída Exception Konvence: –název výjimky končí slovem Exception Bývá vhodné přidat vlastnosti pro další infor- mace: –není vhodné předávat všechny důležité informace jen pomocí vlastnosti Message

16/04/ Práce s výjimkami (2) Výjimky by měly být používány jen pro výji- mečné stavy: –zpracování výjimky je náročnější než použití podmí- něného příkazu –jestliže lze chybu očekávat často, je lepší ji řešit pro- gramově (pomocí podmíněného příkazu nebo návra- tové hodnoty) Nikdy by: –neměla být vyvolávána výjimka přímo třídy Exception –neměl být použitý prázdný blok catch –normální užívání třídy nemělo způsobit výjimku

16/04/ Práce s výjimkami (3) Výjimka může být v programu vyvolána pomo- cí klíčového slova throw Blok catch, který danou výjimku zachytí, mů- že přidat další doplňující informace a provést je- jí opětovné vyvolání Příklad: try {... } catch (Exception ex) {... throw; }

16/04/ Práce s výjimkami (4) nebo: try {... } catch (Exception ex) {... throw ex; } Je-li při opětovném vyvolání výjimky použita proměnná, jež výjimku reprezentuje, dojde k re- setování zásobníku (stack trace), v němž jsou uchovávány informace o vzniklých výjimkách

16/04/ Třídy Trace a Debug (1) Definovány ve jmenném prostoru System.Diagnostics Slouží k zápisu: –trasovacích informací – třída Trace : podávají informace o průběhu aplikace –ladících informací – třída Debug : obvykle podávají zprávy o „výjimečných“ událostech, které v aplikaci nastaly Umožňují definovat, aby určité informace byly zapisovány pouze v případě splnění nějaké pod- mínky

16/04/ Třídy Trace a Debug (2) Informace, které budou podávány v průběhu aplikace závisí na způsobu jejího překladu Jestliže je aplikace přeložena s definovanou konstantou (pomocí direktivy preprocesoru): –DEBUG ( #define DEBUG ): jsou podávány ladící informace –TRACE ( #define TRACE ): jsou podávány trasovací informace Poznámka: –skutečnost, zda konstanty DEBUG a TRACE budou v době překladu definovány (či nikoliv) lze nastavit i pomocí menu prostředí MS Visual Studio (Project  Properties  karta Build)

16/04/ Třídy Trace a Debug (3) Prostředí MS Visual Studio umožňuje aplikaci přeložit v režimu: –Debug: režim, v němž je standardně definována konstanta DEBUG i konstanta TRACE –Release: režim, v němž je standardně definována pouze konstanta TRACE Zápis trasovacích a ladících informací je reali- zován pomocí tzv. posluchačů (listeners), ulože- ných v kolekci (reprezentovanou vlastností): –Trace.Listeners –Debug.Listeners

16/04/ Třídy Trace a Debug (4) V roli posluchačů mohou být použity např. třídy: –TextWriterTraceListener : zapisuje do textového proudu –EventLogTraceListener : zapisuje do deníku událostí Windows –ConsoleTraceListener : zapisuje do konzole –DefaultTraceListener : posílá zprávy pomocí Windows API debuggeru –DelimitedListTraceListener : zapisuje do souboru –XmlWriterTraceListener : zapisuje do XML souboru

16/04/ Třídy Trace a Debug (5) Třídy Trace a Debug mimo jiné definují me- tody: –Write : zapisuje zprávu –WriteLine : zapisuje zprávu a symbol konce řádku –WriteIf : zapisuje zprávu v případě, že je splněna zadaná podmínka –WriteLineIf : podobně jako WriteIf, navíc zapíše symbol konce řádku –Fail : zobrazí chybové okno se správou (v kolekci posluchačů musí být použitý DefaultTraceListener )

16/04/ Třídy Trace a Debug (6) –Assert : v případě, že není splněna zadaná podmínka, zobrazuje okno s výpisem obsahu zásobníku volání –Indent : zvětší úroveň odsazení o počet mezer specifikovaných vlastností IndentSize –Unindent : zmenší úroveň odsazení –Flush : vyprázdní výstupní vyrovnávací paměť a způsobuje, že data jsou zapsána do posluchačů poznámka: –je-li nastavena vlastnost AutoFlush na hodnotu true, pak jsou data zapisována do posluchačů automaticky po každém zápisu

16/04/ Třídy Trace a Debug (7) Pro řízení trasování (ladění) lze používat přepí- nače (trace switches), reprezentované třídami: –BooleanSwitch : slouží k zapnutí (vypnutí) výpisu trasovacích a ladících zpráv –TraceSwitch : poskytuje pět úrovní ( Off, Error, Warning, Info, Verbose ) pro řízení výpisu trasovacích a ladících zpráv Nastavení přepínačů může být provedeno i modi- fikací konfiguračního souboru ( app.config )