RP3/predavanje08 Ugniježdeni tipovi Iznimke 10/11/2018

Slides:



Advertisements
Similar presentations
Continuation of chapter 6…. Nested while loop A while loop used within another while loop is called nested while loop. Q. An illustration to generate.
Advertisements

CHARLES UNIVERSITY IN PRAGUE faculty of mathematics and physics C# Language &.NET Platform 2 nd Lecture Pavel Ježek
Mahmoud Rafeek Alfarra Computer Programming || Chapter 2: Exception handling.
CS 3260 Dennis A. Fairclough Version 1.0
Handling Errors during the Program Execution Svetlin Nakov Telerik Corporation
Understand Error Handling Software Development Fundamentals LESSON 1.4.
Exceptions Programming in C# Exceptions CSE 494R (proposed course for 459 Programming in C#) Prof. Roger Crawfis.
ILM Proprietary and Confidential -
PiKKS. Ukratko Općenito Osnovni elementi OOP u Javi Overloading, overriding, virtual method invocation, modifikatori... Exceptions Java GUI Threads.
Exception Handling Handling Errors During the Program Execution SoftUni Team Technical Trainers Software University
Exception Handling SWE 344 Internet Protocols & Client Server Programming.
C# Exceptions 1 CNS 3260 C#.NET Software Development.
Exception Handling 11. © Aptech Ltd. Objectives 2Building Applications Using C# / Session 11  Define and describe exceptions  Explain the process of.
Predavanje br. 7 Formiranje GIS-a II Relacione klase.
Petlje WHILE – WEND.
Računarski praktikum 3 Vježbe 07
Java Hello world !.
Algoritamske/programske strukture
Nadgradnja klasa i nasljeđivanje – 3
Programi,Podaci,Varijable,Računanje- Uvod
RP3/predavanje02 Programski jezik C#: Tipovi 12/11/2018
EBSCO eBook Academic Collection: upute za korištenje na računalu
Programiranje - Blokovi naredbi i logički tipovi –
OSNOVE PROGRAMIRANJA U PROGRAMSKOM JEZIKU
Java Petlje i logika - 1.
CNS 3260 C# .NET Software Development
Naredbe ciklusa.
Programiranje 2 – C++ Klase i objekti
Petlje FOR - NEXT.
REPEAT…UNTIL Naredbe ciklusa.
Programi,Podaci,Varijable,Računanje - 2
Java Iznimke - exceptions.
null, true, and false are also reserved.
Објектно орјентисано програмирање
KREIRANJE OBJEKATA.
Oрганизација програма
Java Klase (Classes).
Uvod u programiranje - matematika – X predavanje
Arrays and strings -2 (nizovi i znakovni nizovi)
14 UNUTRAŠNJE I ANONIMNE KLASE
Изведене класе Вишеструко извођење Полиморфизам
Elementi programskog jezika PASCAL
Arrays and strings -1 (nizovi i znakovni nizovi)
Klasa grafik.
Programiranje II Obrada izuzetaka.
M-datoteke.
InputBox i naredba IF.
Objektno orijentisano programiranje
Exception Handling CSCI293 - C# October 3, 2005.
(カックロ ) Ivo Ivanišević Ena Melvan
Ključne reči,identifikatori, konstante i promenljive
Internet FTP usluga.
PROGRAMSKI JEZIK PASCAL
Visual Basic – Prvi primjer
Osnovni simboli jezika Pascal
Do While ... Loop struktura
Računarski praktikum 3 Vježbe 01
Default konstruktor struct C{ int i; }; struct D{ D( ):i(1){ }
Iznimke C++ nudi mehanizam izbacivanja i hvatanja iznimaka za postupanje s greškama pri izvršavanju programa. Uporaba tog mehanizma nije nužna jer se.
Programming in C# Lesson 5. Exceptions..
Strukture podataka i algoritmi 5. VRIJEME IZVRŠAVANJA ALGORITMA
Skup instrukcija procesora
Programiranje - Naredbe za kontrolu toka programa – 1. dio
Programiranje - Naredbe za kontrolu toka programa – 3. dio
class PrintOnetoTen { public static void main(String args[]) {
Chapter 13 Exception Handling: A Deeper Look
Exception Objects An exception is an abnormal condition that arises in a code sequence at rum time. Exception is a way of signaling serious problem.
Programiranje - Naredbe za kontrolu toka programa – 1. dio
Vježbenica 2: struktura grananja – 2.dio
Hour of Code Coding Jetpack Jumper Mateja Hržica, MSP.
Presentation transcript:

---------- Računarski praktikum 3 ---------- RP3/predavanje08 Ugniježdeni tipovi Iznimke 10/11/2018 ---------- Računarski praktikum 3 ---------- Maja Starčević

Ugniježdeni tipovi Za ugniježdene (engl. nested) tipove vrijede sljedeća pravila: Mogu pristupati svim članovima tipa koji ih sadrži (pa i privatnima). Mogu imati bilo koji modifikator pristupa. Default vidljivost je private. Svi korisnički definirani tipovi mogu biti ugniježdeni, odnosno ugnijezditi se mogu klase, strukture, enumeracije, delegati, sučelja Samo klase i strukture mogu sadržavati ugniježdene tipove. 10/11/2018 Računarski praktikum 3

Ugniježdeni tipovi public class Proizvod { private class Sastav { ... } public enum Boja { Crna, Smedja, Plava }; } U prethodnom primjeru su klasa Sastav i enumeracija Boja ugniježdeni tipovi. Pozivanje izvan klase Proizvod: Proizvod.Boja boja=Proizvod.Boja.Plava; 10/11/2018 Računarski praktikum 3

Ugniježdeni tipovi Zadatak: pronađite greške u kodu: class Outer { int a; class Inner int b; Outer o=new Outer( ); public Inner( ) { b = o.a; } } Outer o = new Outer( ); Outer.Inner oo = new Outer.Inner( ); 10/11/2018 Računarski praktikum 3

Ugniježdeni tipovi class Outer { int a; class Inner int b; Outer o=new Outer( ); public Inner( ) { b = o.a; } } Outer o = new Outer( ); Outer.Inner oo = new Outer.Inner( ); // klasa Outer.Inner ima private pristup public Inner( ) { b = o.a; } // klasa nije ugniježdena u klasi Outer 10/11/2018 Računarski praktikum 3

Iznimke Try/catch blok je primarni mehanizam za rukovanje iznimkama. Omogućuje razdvajanje rukovanja pogreškom od normalnog toka algoritma. Ako u try dijelu tog bloka postoji pogreška, prosljeđuje se catch dijelu bloka. Pogreška koja uzrokuje skok programskog toka u catch blok zove se iznimka. Finally blok provodi potrebno čišćenje prije zatvaranja programa. 10/11/2018 Računarski praktikum 3

Iznimke static void Main( ) { try int x=1, y=0; Console.WriteLine (x / y); } catch (DivideByZeroException e) Console.WriteLine(“Dijeljenje s nulom!”); 10/11/2018 Računarski praktikum 3

Iznimke try { ....... } catch (ExceptionA e) ........ catch (ExceptionB e) finally ............ Tip iznimke mora biti System.Exception ili klasa izvedena iz System.Exception Napomena: Try blok treba doći uvijek u kombinaciji s catch, finally ili catch i finally blokom. 10/11/2018 Računarski praktikum 3

Iznimke Ukoliko želimo uhvatiti iznimku bilo kojeg tipa, možemo pisati catch blok u obliku catch (Exception e) { ……. } ili, ako nam nije potrebna referenca na iznimku, jednostavnije kao catch { ……. } 10/11/2018 Računarski praktikum 3

Iznimke ArgumentException MulticastNotSupportedException ArgumentNullException NotFiniteNumberException ArithmeticException NotSupportedException ArrayTypeMismatchException NullReferenceException DivideByZeroException OutOfMemoryException FormatException OverFlowException IndexOutOfRangeException StackOverFlowException InvalidCastExeption TypeInitializationException MemberAccessException 10/11/2018 Računarski praktikum 3

Iznimke Primjer 1: static void Main(string[] args) { try throw new ArgumentNullException(); } catch(ArgumentException e) Console.WriteLine("Uhvatio ArgumentException iznimku"); finally Console.WriteLine("U finally bloku"); // Uhvatio ArgumentException iznimku U finally bloku 10/11/2018 Računarski praktikum 3

Iznimke Primjer 2: static void Main(string[] args) { try throw new ArgumentException(); } catch(ArgumentNullException e) Console.WriteLine("Uhvatio ArgumentException iznimku"); finally Console.WriteLine("U finally bloku"); // Unhandled Exception : System. ArgumentException …….. U finally bloku 10/11/2018 Računarski praktikum 3

Iznimke Primjer 3: static void Main(string[ ] args) { int a = 2, b = 0; try if (b == 0) throw new DivideByZeroException( ); int c=a/b ; } catch (DivideByZeroException e) // specijaliziraniji tip iznimke se stavlja u prvi { // catch blok Console.WriteLine(e.ToString( )); catch (Exception e) 10/11/2018 Računarski praktikum 3

Iznimke Primjer 4: static void Main(string[ ] args) { int a = 2, b = 0; try if (b == 0) throw new DivideByZeroException( ); int c=a/b ; } catch (Exception e) Console.WriteLine(e.ToString( )); catch (DivideByZeroException e) // error, catch blok ne može teoretski uhvatiti iznimku 10/11/2018 Računarski praktikum 3

Iznimke Primjer 5: catch (System.DivideByZeroException) class Program { static void Main(string[] args) Program p = new Program(); p.Funkcija( ); } public void Funkcija() try double a = 2; double b = 0; Console.WriteLine(Podijeli(a, b)); catch (System.DivideByZeroException) { Console.WriteLine("DivideByZeroException!"); } catch (System.ArithmeticException) Console.WriteLine("ArithmeticException!"); catch (Exception e) Console.WriteLine("Log: " + e.ToString()); public double Podijeli(double a, double b) if (b==0) throw new System.DivideByZeroException( ); if (a==0) throw new System.ArithmeticException( ); return a/b; 10/11/2018 Računarski praktikum 3

Iznimke static void Main(string[] args) class Program Primjer 6: { { static void f() try throw new OverflowException(); } catch (NullReferenceException e) Console.WriteLine("Uhvatio iznimku u funkciji f:"); Console.WriteLine(e.ToString()); finally Console.WriteLine("Finally u funkciji f"); } // finally blok se izvršava static void Main(string[] args) { try f(); } catch (Exception e) //hvatanje iznimke Console.WriteLine("Uhvatio iznimku u funkciji Main:"); Console.WriteLine(e.ToString()); finally Console.WriteLine("Finally u funkciji Main"); } // finally blok se izvršava Primjer 6: 10/11/2018 Računarski praktikum 3

Iznimke class Program static void Main(string[] args) Primjer 6: { { static void f() try throw new OverflowException(); } catch (OverflowException e) // hvatanje iznimke Console.WriteLine("Uhvatio iznimku u funkciji f:"); Console.WriteLine(e.ToString()); throw; // ponovno izbacivanje finally Console.WriteLine("Finally u funkciji f"); } // finally blok se izvršava static void Main(string[] args) { try f(); } catch (Exception e) // ponovno hvatanje Console.WriteLine("Uhvatio iznimku u funkciji Main:"); Console.WriteLine(e.ToString()); finally Console.WriteLine("Finally u funkciji Main"); } // finally blok se izvršava Primjer 6: 10/11/2018 Računarski praktikum 3