Zaawansowane programowanie w języku C++ Wyjątki

Podobne dokumenty
Zaawansowane programowanie w języku C++ Zarządzanie pamięcią w C++

Zaawansowane programowanie w języku C++ Klasy w C++

Zaawansowane programowanie w języku C++ Przeciążanie operatorów

Zaawansowane programowanie w języku C++ Programowanie obiektowe

Zaawansowane programowanie w języku C++ Funkcje uogólnione - wzorce

Programowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków

Architektura komputerów Wprowadzenie do algorytmów

Architektura komputerów Reprezentacja liczb. Kodowanie rozkazów.

Wyjątki. Wyjątki. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Politechnika Wrocławska

Wyjątki (exceptions)

Programowanie w C++ Wykład 6. Katarzyna Grzelak. kwiecień K.Grzelak (Wykład 6) Programowanie w C++ 1 / 40

Zaawansowane programowanie w języku C++ Biblioteka standardowa

Obsługa błędów za pomocą wyjątków. Paweł Motofa (140746)

Programowanie w C++ Wykład 8. Katarzyna Grzelak. 7 maja K.Grzelak (Wykład 8) Programowanie w C++ 1 / 31

Studia podyplomowe realizowane w ramach zadania 5 Systemy mobilne i techniki multimedialne

Wyjątki Monika Wrzosek (IM UG) Programowanie obiektowe 180 / 196

Kurs programowania. Wykład 3. Wojciech Macyna. 22 marca 2019

Systemy operacyjne na platformach mobilnych 2 Platforma Maemo

Aplikacje w środowisku Java

Obsługa wyjątków. Język C++ WW12

Programowanie Obiektowe Ćwiczenie 4

Wyjątki. Streszczenie Celem wykładu jest omówienie tematyki wyjątków w Javie. Czas wykładu 45 minut.

Systemy operacyjne na platformach mobilnych 2 Podstawy obsługi powłoki Bash

dr inż. Małgorzata Langer Architektura komputerów

Wykład 8: Obsługa Wyjątków

Zad.30. Czy można utworzyć klasę, która implementuje oba interfejsy?

Efekty uboczne błędów

Systemy operacyjne na platformach mobilnych 3 Wstęp do systemu Android

Throwable. Wyjatek_1(int x_) { x = x_; } int podaj_x()

Zaawansowane programowanie w języku C++ Wstęp

WYJĄTKI. Jest ona jednak czasochłonna i prowadzi do duŝego zapotrzebowania na zasoby systemu.

Systemy operacyjne na platformach mobilnych 2 Programowanie aplikacji z graficznym interfejsem użytkownika w GTK+

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Medical electronics part 9a Electroencephalography (EEG)

Architektura komputerów Historia systemów liczących

Układy reprogramowalne i SoC Implementacja w układach FPGA

Klasyfikacja wyjątków

Składnia C++ Programowanie Obiektowe, część 3 Mateusz Cicheński

Programowanie w języku C++

Wyjątki. Wyjątki. Wyjątki. Wyjątki. Wyjątki. Wyjątki

Mikrosystemy Wprowadzenie. Prezentacja jest współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie pt.

Języki i metody programowania Java INF302W Wykład 3 (część 1)

Układy reprogramowalne i SoC Język VHDL (część 4)

Język C++ wykład VIII

Micha Strzelecki Metody przetwarzania i analizy obrazów biomedycznych (2)

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

Programowanie obiektowe

Zaawansowane programowanie w C++ (PCP)

Składnia C++ Programowanie Obiektowe Mateusz Cicheński

Klasy cd. Struktury Interfejsy Wyjątki

Typy metod: konstruktory, destruktory, selektory, zapytania, iteratory.

Programowanie obiektowe

ZARZĄDZANIE SIECIAMI TELEKOMUNIKACYJNYMI

Wykład 4 Delegat (delegate), właściwości indeksowane, zdarzenie (event) Zofia Kruczkiewicz

Konwencje obsługi błędów

Podstawy programowania w języku C++

EGZAMIN PROGRAMOWANIE II (10 czerwca 2010) pytania i odpowiedzi

ATD. Wykład 8. Programowanie (język C++) abstrakcyjny typ danych. Abstrakcyjne typy danych (ATD) Metody czysto wirtualne. Definicje i uwagi:

Materiały do zajęć III

Składnia C++ Programowanie Obiektowe Mateusz Cicheński

Nauczycielem wszystkiego jest praktyka Juliusz Cezar. Nauka to wiara w ignorancję ekspertów Richard Feynman

Podstawy i języki programowania

Tbli Tablice obiektów biktó są tworzone dokładnie d tak samo, jak i tablice, składające się z elementów innego typu

Java podstawy jęyka. Wykład 2. Klasy abstrakcyjne, Interfejsy, Klasy wewnętrzne, Anonimowe klasy wewnętrzne.

Programowanie obiektowe, wykład nr 7. Przegląd typów strukturalnych - klasy i obiekty - c.d.

Programowanie w języku C++

Zaawansowane techniki programowania C#

Wprowadzanie danych z klawiatury. Wyjątki związane z wprowadzaniem danych, przekroczeniem rozmiaru tablicy, dzieleniem przez zero itd.

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

Java: kilka brakujących szczegółów i uniwersalna nadklasa Object

PARADYGMATY PROGRAMOWANIA Wykład 4

Łukasz Januszkiewicz Technika antenowa

Programowanie obiektowe, wykład nr 6. Klasy i obiekty

Zdalne wywołanie metod - koncepcja. Oprogramowanie systemów równoległych i rozproszonych Wykład 7. Rodzaje obiektów. Odniesienie do obiektu

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

Zajęcia nr 5 Algorytmy i wskaźniki. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

Wykład 2 Wybrane konstrukcje obiektowych języków programowania (1)

Obsługa błędów czyli jak sobie radzić z prawem Murphy ego

Programowanie 2. Język C++. Wykład 3.

Łukasz Januszkiewicz Technika antenowa

Klasy Obiekty Dziedziczenie i zaawansowane cechy Objective-C

Sesje, ciasteczka, wyjątki. Ciasteczka w PHP. Zastosowanie cookies. Sprawdzanie obecności ciasteczka

Programowanie obiektowe w C++ Wykład 12

Java SE Laboratorium nr 4. Temat: Obsługa wyjątków i zdarzeń

Dawid Gierszewski Adam Hanasko

DYNAMICZNE PRZYDZIELANIE PAMIECI

Wykład 04. Programowanie obiektowe. Maciej Wołoszyn 17 marca Spis treści

Wprowadzenie w dziedziczenie. Klasa D dziedziczy klasę B: Klasa B klasa bazowa (base class), klasa D klasa pochodna (derived class).

Wykład I. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie?

Programowanie Komponentowe Zarządzanie obiektami: kontenery

6 Niektóre nowe cechy standardu C++11

Programowanie w C++ Wykład 12. Katarzyna Grzelak. 28 maja K.Grzelak (Wykład 12) Programowanie w C++ 1 / 27

Języki Programowania. Prowadząca: dr inż. Hanna Zbroszczyk. tel: Konsultacje: piątek:

Oprogramowanie systemów równoległych i rozproszonych Wykład 7

wykład V uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C++ klasy i obiekty wykład V dr Jarosław Mederski Spis Język C++ - klasy

Co to jest sterta? Sterta (ang. heap) to obszar pamięci udostępniany przez system operacyjny wszystkim działającym programom (procesom).

Czym właściwie jest taka sytuacja wyjątkowa, która może narobić tyle zamieszania? Otóż:

Dzisiejszy wykład. Klasa string. wersja prosta wersja ze zliczaniem odwołań. Wyjątki Specyfikator volatile Semafory

Multimedia JAVA. Historia

Transkrypt:

Zaawansowane programowanie w języku C++ Wyjątki Prezentacja jest współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie pt. Innowacyjna dydaktyka bez ograniczeń - zintegrowany rozwój Politechniki Łódzkiej - zarządzanie Uczelnią, nowoczesna oferta edukacyjna i wzmacniania zdolności do zatrudniania osób niepełnosprawnych Prezentacja dystrybuowana jest bezpłatnie Politechnika Łódzka, ul. Żeromskiego 116, 90-924 Łódź, tel. (042) 631 28 83 w ramach Europejskiego www.kapitalludzki.p.lodz.pl Funduszu Społecznego

Sytuacje wyjątkowe Wyjątkiem jest nieoczekiwana sytuacja, której nie da się sensownie obsłużyć w danym miejscu w kodzie: brak pamięci, wyjście poza indeks kontenera itd. Tradycyjne podejście to przekazanie przez funkcję informacji o błędzie jako wartości zwracanej: Informacja o błędzie tego samego typu co wartość zwracana A co kiedy funkcja wykorzystuje cały zakres typu zwracanego? Konieczność sprawdzenia wartości zwracanej po każdym wywołaniu funkcji 2

Przykład #include <new> MyClass *mc = new( std::nothrow ) MyClass; if (!mc) { std::cout << "Brak pamięci!" << std::endl; exit(1); } 3

Wyjątki w C++ W C++ wyjątki się rzuca (ang. throw) Rzucony wyjątek musi być przechwycony (ang. catch) Jeżeli używamy jakiś funkcji mogących generować wyjątki to w C++ mówimy, że próbujemy ich użyć (ang. try) W C++ wyjątkiem jest obiekt try { kod, który podowuje wyjątek } catch ( wyjątek1 ) { obsługa wyjątku1 } catch ( wyjątek2 ) { obsługa wyjątku2 } catch (... ) { obsługa pozostałych wyjątków } 4

Przykład bez przechwytywania wyjątków #include<vector> int main() { std::vector<int> vec( 10, 1 ); vec.at( 100 ); return 0; } 5

Prawidłowe przechwycenie wyjątku #include<vector> #include<stdexcept> #include<iostream> int main() { std::vector<int> vec( 10, 1 ); } try { vec.at( 100 ); } catch ( std::out_of_range& e ) { std::cout << "Zly indeks!\n"; std::cout << e.what() << std::endl; } return 0; 6

Generowanie wyjątku Wyjątek może być obiektem dowolnej klasy Najczęściej wyjątek rzucany jest jako obiekt tymczasowy throw exception(); throw MyClass("Mój wyjątek"); 7

Propagacja wyjątku Wyjątek zwija stos tak długo aż napotka na blok, który go obsłuży (przechwyci) Sprzątanie po wyjątku realizuje się poprzez destruktory! Jeżeli wyjątek nie zostanie przechwycony to program zakończy swoje działanie! 8

Ograniczenie generowanych wyjątków Z projektowego punktu widzenia korzystne jest jawne zdefiniowanie wyjątków jakie dana funkcja może rzucić: void myfunc() throw ( std::out_of_range, myexception ); Funkcja z ograniczoną listą wyjątków może generować jedynie te wyjątki, które pojawiły się na liście Jeżeli rzucony przez funkcję zostanie wyjątek, którego nie ma na liście to wywołana będzie funkcja unexpected(), która domyślnie woła funkcję terminate() 9

Wyjątki a konstruktory i destruktory... 10

Zaawansowane programowanie w języku C++ Wyjątki Prezentacja jest współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie pt. Innowacyjna dydaktyka bez ograniczeń - zintegrowany rozwój Politechniki Łódzkiej - zarządzanie Uczelnią, nowoczesna oferta edukacyjna i wzmacniania zdolności do zatrudniania osób niepełnosprawnych Prezentacja dystrybuowana jest bezpłatnie Politechnika Łódzka, ul. Żeromskiego 116, 90-924 Łódź, tel. (042) 631 28 83 w ramach Europejskiego www.kapitalludzki.p.lodz.pl Funduszu Społecznego