Objektumorientált programozás Pál László. Sapientia EMTE, Csíkszereda, 2014/2015

Hasonló dokumentumok
Java programozási nyelv 9. rész Kivételkezelés

Objektum Orientált Programozás. 11. Kivételkezelés 44/1B IT MAN

Objektumorientált programozás C# nyelven

Kivételek, kivételkezelés a C++ nyelvben

Objektumorientált programozás C# nyelven III.

Kivételkezelés, beágyazott osztályok. Nyolcadik gyakorlat

Globális operátor overloading

Kivételkezelés a C++ nyelvben Bevezetés

Java IX. telkezelés a Java-ban

Java IX. telkezelés a Java-ban

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás

Pénzügyi algoritmusok

Gregorics Tibor Modularizált programok C++ nyelvi elemei 1

A szerzõrõl... xi Bevezetés... xiii

Imperatív programozás

Kivételek kezelése (exception handling) Hibakezelés old style. Kivételkezelés

Objektumorientált programozás Pál László. Sapientia EMTE, Csíkszereda, 2014/2015

Kivételkezelés. Tesztelés, hibakeresés, kivételkezelés. Programozás II. előadás. Szénási Sándor

S ha kettészelik is: balfelöl belőle Valamivel mindig - Valamivel mindiq több marad. (Nyugat )

Kivételkezelés, naplózás. Exception handling, logging

Az iskolai rendszerű képzésben az összefüggő szakmai gyakorlat időtartama. 10. évfolyam Adatbázis- és szoftverfejlesztés gyakorlat 50 óra

Kivételek. A program végrehajtása során ritkán bekövetkező események Nem a fő végrehajtási ág ; logikailag alacsonyabbrendű feladat jelzése

Foglalkozási napló a 20 /20. tanévre

Objektumorientált programozás C# nyelven III.

Java és web programozás

Már megismert fogalmak áttekintése

1. Bevezetés A C++ nem objektumorientált újdonságai 3

7. K: JAVA alapok Konzultáció

Objektumorientált programozás Pál László. Sapientia EMTE, Csíkszereda, 2014/2015

OO PDO. Tehát PDO használatával, könnyen átállhatunk egy másik adatbáziskezelőre, anélkül hogy a kódot teljes egészében újraírnánk.

Programozási technikák Pál László. Sapientia EMTE, Csíkszereda, 2009/2010

Objektumorientált programozás C# nyelven

Objektumorientált programozás Pál László. Sapientia EMTE, Csíkszereda, 2014/2015

Java programozási nyelv

Széchenyi István Egyetem. Programozás III. Varjasi Norbert

Bevezetés a programozásba Előadás: Objektumszintű és osztályszintű elemek, hibakezelés

Programozási nyelvek II.: JAVA

Irányítástechnika Elıadás. PLC-k programozása

C++ programozási nyelv

Eseménykezelés. Szoftvertervezés és -fejlesztés II. előadás. Szénási Sándor.

A programozás alapjai

A C# programozási nyelv alapjai

Alkalmazott Modul III 3. előadás. Procedurális programozás: alprogramok, kivételkezelés

Alkalmazott Modul III 3. előadás. Procedurális programozás: alprogramok, kivételkezelés. Alprogramok Szükségessége

Szoftvertechnológia alapjai Java előadások

Az osztályok csomagokba vannak rendezve, minden csomag tetszőleges. Könyvtárhierarhiát fed: Pl.: java/util/scanner.java

2016, Funkcionális programozás

3. modul - Szövegszerkesztés

Osztályok. construct () destruct() $b=new Book(); $b=null; unset ($b); book.php: <?php class Book { private $isbn; public $title;

Dr. Pál László, Sapientia EMTE, Csíkszereda WEB PROGRAMOZÁS 2.ELŐADÁS. Objektumorientált programozás

Statikus adattagok. Statikus adattag inicializálása. Speciális adattagok és tagfüggvények. Általános Informatikai Tanszék

Johanyák Zsolt Csaba: Kivételkezelés oktatási segédlet Copyright 2008 Johanyák Zsolt Csaba

Bevezetés a C++ programozási nyelvbe

Osztályszintű elérés, kivételkezelés, fájlkezelés

Programozás II. 3. gyakorlat Objektum Orientáltság C++-ban

Clang Static Analyzer belülről

Java programozási nyelv 4. rész Osztályok II.

Java II. I A Java programozási nyelv alapelemei

A függvény kód szekvenciáját kapcsos zárójelek közt definiáljuk, a { } -ek közti részt a Bash héj kód blokknak (code block) nevezi.

JAVA PROGRAMOZÁS 4.ELŐADÁS

Automatikus tesztgenerálás modell ellenőrző segítségével

Abstract osztályok és interface-ek. 7-dik gyakorlat

Elosztott rendszerek. Az elıadás. Az elosztott rendszer definíciója. Köztesrétegként felépülı elosztott rendszer

Informatika terméktervezőknek

Helyes-e az alábbi kódrészlet? int i = 1; i = i * 3 + 1; int j; j = i + 1; Nem. Igen. Hányféleképpen lehet Javaban megjegyzést írni?

A LOGSYS GUI. Fehér Béla Raikovich Tamás, Laczkó Péter BME MIT FPGA laboratórium

Programozási technológia

Objektumorientált programozás C# nyelven

Az operációs rendszer szerkezete, szolgáltatásai

1. Alapok. #!/bin/bash

Osztálytervezés és implementációs ajánlások

Occam 1. Készítette: Szabó Éva

Osztálytervezés és implementációs ajánlások

Programozási nyelvek Python

Operációs rendszerek gyak.

Norway Grants. Az akkumulátor mikromenedzsment szabályozás - BMMR - fejlesztés technológiai és műszaki újdonságai. Kakuk Zoltán, Vision 95 Kft.

C++ programozási nyelv Struktúrák a C++ nyelvben

Programozási alapismeretek 4.

A szemantikus elemzés helye. A szemantikus elemzés feladatai. A szemantikus elemzés feladatai. Deklarációk és láthatósági szabályok

Tájékoztató. Használható segédeszköz: -

Ujj Tamás * VALÓS IDEJŐ ADATTÁRHÁZAK

Bevezetés a számítástechnikába

Algoritmusok, adatszerkezetek, objektumok

Programozás II. 2. gyakorlat Áttérés C-ről C++-ra

OOP és UML Áttekintés

Irányítástechnika Elıadás. PLC-k programozása

ZL 90 Vezérlés Amiko és FrogJ motorokhoz

Programozási nyelvek JAVA EA+GY 1. gyakolat

AWK programozás, minták, vezérlési szerkezetek

Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós október 11. Széchenyi István Egyetem, Gy r

C++ programozási nyelv

Szakdolgozat. A Microsoft Access módszertana. Témavezetı: Radványi Tibor Készítette: Erényi Péter, 2006 IV. évfolyam, számítástechnika szak

Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai):

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós március 3. Széchenyi István Egyetem, Gy r

Pelda öröklődésre: import java.io.*; import java.text.*; import java.util.*; import extra.*;

Operációs rendszerek. Az NT folyamatok kezelése

Bevezetés a C++ programozási nyelvbe

VÍZÓRA NYÍLVÁNTARTÓ RENDSZER

Az elektronikus napló

Átírás:

Objektumorientált programozás Pál László Sapientia EMTE, Csíkszereda, 2014/2015

9. ELİADÁS Kivételkezelés (Exception handling) 2

Mi a kivétel (exception)? A kivétel, olyan hibás állapot vagy esemény, amely megszakítja az alkalmazás futását. Az eseményt magát kivételnek hívjuk A kiváltódásnak több oka is lehet, például felhasználói hiba, logikai hiba vagy éppen rendszerhiba A hiba kezelése hagyományos módon általában feltételek segítségével történik, melyekben valamilyen változók, hibakódok, függvények és eljárások visszaadási értékeit figyeljük. Ennek a módszernek több hátránya is van, például a függvények visszatérítési értékét figyelni kell és hiba esetén fel kell szabadítani az erıforrásokat, jelenteni kell a hívónak 3

Mi a kivétel (exception)? A kivételkezelés a.net keretrendszer egy olyan beépített mechanizmusa, melynek segítségével megtalálhatjuk és kezelhetjük a futásidejő hibákat. A.NET keretrendszer többféle beépített kivétellel rendelkezik. Ha a programozó nem biztosít megoldást ezeknek a kivételeknek a kezelésére, akkor a.net keretrendszer futtató környezete nyújt általános megoldást Kivételek segítségével a programlogika és a hibakezelés szétválasztható, ezáltal nı az áttekinthetıség 4

Kivételosztályok VB.NET-ben a futásidejő hibák kivételekké alakulnak. Ilyenkor a vezérlés a futó program aktuális pontjáról a kivételkezelıhöz (exception handler) adódik át. A kivétel, feldolgozása után automatikusan megszőnik A kivétel tehát egy hibaobjektum, amelynek osztálya valamelyik kivételosztály lehet. 5

Kivételosztályok hierarchiája 6

Kivételosztályok hierarchiája Gyakoribb kivételtípusok (objektumosztályok) 7

Kivételosztályok hierarchiája IO kivételtípusok (Névtér: System.IO) 8

Kivételek mechanizmusa A kivételek egész mechanizmusa három kulcsszón alapszik: try: a védett kód kezdetét jelzi, amelyben elıreláthatóan bekövetkezhet a hiba catch: a védett kód végét jelenti, a kivételek kezelésére szolgáló parancsokat tartalmazza finally: annak a programrésznek az elejét jelzi, amely minden esetben végrehajtódik, akár bekövetkezett a kivétel, akár nem. Ezt a részt általában a lefoglalt memória felszabadítására, megnyitott fájlok bezárására használjuk. raise: kivétel generálására szolgál. A legtöbb kivételt, amivel a Delphiben találkozunk, a rendszer generálja, de bizonyos esetekben van értelme saját kivételek kiváltására is. 9

Kivételek mechanizmusa A futási hiba keletkezésekor két dolgot kell megoldani: Le kell kezelnünk a megfelelı módon Fel kell szabadítani a hiba elıtt lefoglalt erıforrásokat: memória felszabadítás, nyitott állományok bezárása, adatbázis bezárása, stb. A továbbiakban a fenti két mőveletet tekintjük át 10

Védelem a futás-idejő hibák ellen Objektumorientált programozás - Pál László A kivételek figyelése és kezelése a következı utasítás segítségével történik: A próba-blokk az esetlegesen kivételhez vezetı utasításokat tartalmazza. A kivétel-blokkokat a nekik megfelelı kivétel létrejöttekor hajtja végre a program. A végül-blokk utasításai a kivételkezelés után kerülnek sorra 11

Védelem a futás-idejő hibák ellen Objektumorientált programozás - Pál László A kivétel egy Exception vagy belıle leszármazott típusú objektumot deklarál, melynek segítségével elérhetık a kivétel tulajdonságai. Az objektum Message tulajdonsága megadja a kivétel angol nyelvő leírását. Egy kivétel létrejöttekor megszakad a próba-blokk további utasításainak a végrehajtása. A végül-blokk akkor is végrehajtásra kerül (ha van), ha nem jön létre kivétel Az Exception típusú objektumok tulajdonságai és metódusai: 12

Védelem a futás-idejő hibák ellen Objektumorientált programozás - Pál László Példa: hibakezelés hagyományos módon és kivételkezeléssel. A feladat: hányados-számolás. Ha nem egészszámokat adunk meg, illetve az osztó nulla, a program egy megfelelı üzenetet küld. Ellenırzés nélküli kód: 13

Védelem a futás-idejő hibák ellen Objektumorientált programozás - Pál László Példa: ellenırzés nélküli hibalehetıségek (konverziós hiba) 14

Védelem a futás-idejő hibák ellen Objektumorientált programozás - Pál László Példa: ellenırzés nélküli hibalehetıségek (nullával való osztás) 15

Védelem a futás-idejő hibák ellen Objektumorientált programozás - Pál László Példa: a feladat megvalósítása hagyományos módon. 16

Védelem a futás-idejő hibák ellen Objektumorientált programozás - Pál László Példa: a feladat megvalósítása hagyományos módon. 17

Védelem a futás-idejő hibák ellen Objektumorientált programozás - Pál László Példa: a feladat megvalósítása kivételkezeléssel 18

Kivételek sorrendje A Try-Catch-ben a kivételosztályok felsorolásának sorrendje nem minden esetben tetszıleges. Akárcsak a Case utasításnál, a rendszer itt is a beírás sorrendjében ellenırzi a kivételosztályokat. Az elsı találathoz írt utasításokat végrehajtja, és nem keres tovább. Akkor van találat, amikor a vizsgált kivételosztály típus szerint kompatibilis az aktuális hiba kivételével. Emiatt, elıbb mindig a származtatott kivételosztályok kezelıit soroljuk fel. Helyes sorrend Rossz sorrend 19

Erıforrások biztonságos használata (Try...Finally) Ha egy erıforrást lefoglalunk (pld. fájl megnyitása), akkor gondolnunk kell ennek felszabadítására, még ha hiba keletkezik akkor is. VB.NET-ben ezt a Try-Finally utasítás segítségével oldhatjuk meg: A try-finally-end try szerkezet lényege, hogy a finally-end try közötti mőveletsor végrehajtódik abban az esetben is, ha a try-finally közötti rész normálisan ér véget, valamint akkor is, ha abban kivétel keletkezik. 20

Erıforrások biztonságos használata (Try...Finally) 1.Példa: A Finally-End Try törzsében található utasítás minden körülmények között lefut. Ebben az esetben, annyi a probléma hogy nincs kivételkezelés, viszont ez is megoldható kód egymásba ágyazással az alábbiak szerint: 21

Erıforrások biztonságos használata (Try...Finally) 1.Példa: fájlok kezelése 22

Kérdések Mi a különbség a klasszikus több őrlapos alkalmazás és az MDI alkalmazás között? 23

Kérdések Mi a különbség a modális és nem modális ablakok között a futásukat tekintve? 24