Obravnava izjem (exception handling)

Similar documents
Java Programming Language Mr.Rungrote Phonkam

Exception handling in Java. J. Pöial

CSC 1214: Object-Oriented Programming

Here is a hierarchy of classes to deal with Input and Output streams.

More on Exception Handling

More on Exception Handling

Vodnik skozi Google Analytics Beta verzija 1. del. prehod s stare kode (urchin.js), k novi kodi za sledenje (ga.js)

UNIT - V. Inheritance Interfaces and inner classes Exception handling Threads Streams and I/O

Prirejanje in preverjanje tipov

C16b: Exception Handling

2- Runtime exception: UnChecked (execution of program) automatically propagated in java. don t have to throw, you can but isn t necessary

Unit 4. Exception handling mechanism. new look try/catch mechanism in Java Enumeration in Java 5 - usage.

Lecture 19 Programming Exceptions CSE11 Fall 2013

ECE 122. Engineering Problem Solving with Java

Q: Do You made a backup before upgrade? A: Only cowards make backups!

Course Status Polymorphism Containers Exceptions Midterm Review. CS Java. Introduction to Java. Andy Mroczkowski

Exception in thread "main" java.lang.arithmeticexception: / by zero at DefaultExceptionHandling.main(DefaultExceptionHandling.

For more details on SUN Certifications, visit

Razred File vsebuje osnovne metode za delo z datotekami, kot sta branje in zapisovanje.

COE318 Lecture Notes Week 10 (Nov 7, 2011)

Errors and exceptions in Java E

Introduction. Exceptions: An OO Way for Handling Errors. Common Runtime Errors. Error Handling. Without Error Handling Example 1

Delavnica za konfiguriranje dostopovnih točk WEB konfiguracija LANCOM L-54

Unit 5 - Exception Handling & Multithreaded

Java Errors and Exceptions. Because Murphy s Law never fails

QUESTION BANK. SUBJECT CODE / Name: CS2311 OBJECT ORIENTED PROGRAMMING

IS311 Programming Concepts 2/59. AVA Exception Handling Jการจ ดการส งผ ดปรกต

Node. Node getleft() Returns the left Node child of this Node (might be null)

What are Exceptions?

Fundamentals of Object Oriented Programming

Chapter 12 Exception Handling

Chapter 13 Exception Handling

Exceptions. CSC207 Winter 2017

BBM 102 Introduction to Programming II Spring Exceptions

Java Basics: Part 3 - Exceptions. Manuel Oriol

How we calculate volume with the use of NTF method. Kako izračunamo volumen z uporabo metode NTF

CSC207H: Software Design. Exceptions. CSC207 Winter 2018

Study Notes for Sun Certified Programmer for Java 2 Platform

UE 2I002 (ex LI230) : éléments de programmation par objets avec Java TD10 - Exceptions

Algorithms and Data Structures

EXCEPTION HANDLING. // code that may throw an exception } catch (ExceptionType parametername) {

Exception Handling. Exception Handling

Lara Technologies Special-Six Test

Le L c e t c ur u e e 5 To T p o i p c i s c t o o b e b e co c v o e v r e ed e Exception Handling

Programming II (CS300)

IP PACKET QUEUING DISCIPLINES AS BASIC PART OF QOS ASSURANCE WITHIN THE NETWORK

CIS265 - Spring Exam 2 First Name Last Name CSU#

Image Java Foundation Classes (JFC) java.awt.image JFC. Image. Image. Image PNG GIF JPEG

Recitation 3. 2D Arrays, Exceptions

Programming II (CS300)

Exception class Hierarchy

I/O Streams. program. Standard I/O. File I/O: Setting up streams from files. program. File I/O and Exceptions. Dr. Papalaskari 1

I/O Streams. program. Standard I/O. File I/O: Setting up streams from files. program. File I/O and Exceptions. Dr. Papalaskari 1

ITI Introduction to Computing II

Exceptions. Author: Boaz Kantor The Interdisciplinary Center, Herzliya Introduction to Computer Science Winter Semester

ITI Introduction to Computing II

Software Practice 1 - Error Handling

BBM 102 Introduction to Programming II Spring 2017

CS115. Chapter 17 Exception Handling. Prof. Joe X. Zhou Department of Computer Science. To know what is exception and what is exception handling

Tutorial 8 Date: 15/04/2014

UDF for volume calculation with the use of NTF method. Lastne Excel funkcije za izračun prostornin po NTF metodi

EXCEPTION-HANDLING INTRIVIEW QUESTIONS

Unit IV Generic Programming

Dogodkovno vodeno programiranje

Transakcije v MariaDB/MySQL (transakcija A)

Programski jezik Java

C17: File I/O and Exception Handling

CS159. Nathan Sprague

Data Structures G5029


A Third Look At Java. Chapter Seventeen Modern Programming Languages, 2nd ed. 1

CS 200 Command-Line Arguments & Exceptions Jim Williams, PhD

EXCEPTION HANDLING. Summer 2018

CSCI 261 Computer Science II

Data Structures. 02 Exception Handling

Chapter 5. Exceptions. CSC 113 King Saud University College of Computer and Information Sciences Department of Computer Science. Dr. S.

To Think About. MyClass.mogrify(new int[] { 1, 2, 4, 6 }));

Exceptions and Error Handling

SECTION-1 Q.1.Which two code fragments are most likely to cause a StackOverflowError? (Choose two.)

School of Informatics, University of Edinburgh

Exceptions. References. Exceptions. Exceptional Conditions. CSE 413, Autumn 2005 Programming Languages

COMP200 EXCEPTIONS. OOP using Java, based on slides by Shayan Javed

Exceptions. CSE 142, Summer 2002 Computer Programming 1.

Exceptions. Readings and References. Exceptions. Exceptional Conditions. Reading. CSE 142, Summer 2002 Computer Programming 1.

Državni izpitni center SPOMLADANSKI IZPITNI ROK *M * NAVODILA ZA OCENJEVANJE. Četrtek, 2. junij 2016 SPLOŠNA MATURA

File I/O and Exceptions

I/O Streams. program. Standard I/O. File I/O: Setting up streams from files. program. File I/O and Exceptions. Dr. Papalaskari 1

PREDMET. Osnove Java Programiranja. Čas JAVADOC

Chapter 10. Exception Handling. Java Actually: A Comprehensive Primer in Programming

Formal Methods for Java

Exception Handling. General idea Checked vs. unchecked exceptions Semantics of... Example from text: DataAnalyzer.

Building Java Programs

CMSC131. Exceptions and Exception Handling. When things go "wrong" in a program, what should happen.

Protocol Programmability

EXCEPTIONS. Objectives. The try and catch Statements. Define exceptions. Use try, catch and finally statements. Describe exception categories

Java Programming MCA 205 Unit - II. Learning Objectives. Introduction. 7/31/2013MCA-205 Java Programming

EXCEPTIONS. Java Programming

CS 113 PRACTICE FINAL

Exception-Handling Overview

Delavnica za konfiguriranje dostopovnih točk Konfiguracija LANCOM L-54 z uporabo orodja LANConfig

Transcription:

Obravnava izjem (exception handling)

Ko umre programer

Uvod Ne glede na to, kako dobro smo načrtovali nek program, je še vedno možnost, da lahko med izvajanjem pride do kakšnih napak. Dobro načrtovan program mora vsebovati kodo za obravnavo napak in drugih izjemnih pogojev. Ogledali si bomo možnost obravnave izjem, ki jo nudi Java. Ta tvori objekt Exception, kadarkoli sreča nepričakovano napačno situacijo,kot na primer: neobstoječ sistemski vir, ne-numerični znak v številskem polju, primer: Integer.parseInt(br.readLine()); manjkajočo datoteko ipd.,

Kaj je izjema Izjema je nepričakovan dogodek (event), do katerega pride med izvajanjem programa in ki prekine normalen potek programskih ukazov. Primeri: Poskus dostopa do elementa izven meja nekega polja, Poskus delitve z vrednostjo 0, Poskus dostopa do nekega URL z napačnim protokolom. class test { public static void main(string argv[ ]) { int a=4; int b=0; System.out.println(a/b); // med izvajanjem dobimo ArithmeticException

Razlika med napako in izjemo Naša koda lahko obravnava izjemo in program nadaljuje. Če pride do napake, mora program prekiniti izvajanje.

Primer Psevdo koda funkcije, ki bere datoteko: readfirstline { open the file; read the first line; close the file; // odpiranje lahko ne uspe // branje lahko ne uspe // zapiranje lahko ne uspe

Tradicionalna obravnava napak readfirstline { int errcode = 0; open the file; if (openerror) { errcode = OPEN_ERR; else { read the first line; if (readerror) { errcode = READ_ERR; close the file; if (closeerror) { errcode = errcode and CLOSE_ERROR; return errcode; Javanska obravnava izjem readfirstline { try { open the file; read the first line; close the file; catch (openerror) { handle error; catch (readerror) { handle error; catch (closeerror) { handle error;

Prednosti izjem v Javi (1) Ločena koda za obravnavo napak Pri tradicionalnem programiranju povzroča obravnavanje napak to, da je programska koda nejasna. Java loči podrobnosti obravnave nepričakovanih napak od glavne kode programa. Dobimo kodo, ki je jasna in je tako tudi možnost napak manjša.

Prednosti izjem v Javi (2) Posredovanje napak na klicni sklad Tradicionalna obravnava Java exceptions napak Metoda1 //handle error Error code Metoda1 //handle ex metoda2 metoda3 metoda4 Error code Error code metoda2 metoda3 metoda4 Exception ex Vsaka metoda išče napake in vrača kodo napake kličočo metodi. metoda4 sproži izjemo (exception); metoda1 jo ulovi.

Prednosti izjem v Javi (3) Izjeme lahko ignoriramo Tradicionalna obravnava napak Java exceptions Metoda1 //handle error metoda2 Metoda1 //handle ex metoda2 Exception ex metoda3 metoda4 Error code metoda3 metoda4 Če metoda3 ignorira napako, ne bo ta nikoli obravnavana. Izjemo lahko ulovimo in obravnavamo drugje

Kaj narediti z izjemo? Če kličemo metodo, ki lahko povzroči izjemo, imamo tri možnosti: 1)Izjemo ulovimo in jo obravnavamo. 2)Izjemo posredujemo naprej kličoči metodi. 3)Izjemo ulovimo in sprožimo drugačno izjemo. To, novo izjemo bomo morali obravnavati kje drugje.

Kako ujamemo in obravnavamo izjemo? Klicana metoda bi lahko sprožila izjemo v bloku try. Vsako izjemo obravnavamo v bloku catch. Izvedemo končno obdelavo v bloku finally. try { // call the method catch (exception1) { // handle exception1 catch (exception2) { // handle exception2 finally { // any final processing

Vrste izjem Poznamo veliko vrst izjem, vse so izpeljane iz osnovnega razreda Exception: Exception ClassNotFoundException CloneNotSupportedException IllegalAccessException InstantiationException InterruptedException NoSuchFieldException NoSuchMethodException RuntimeException ArithmeticException ArrayStoreException ClassCastException IllegalArgumentException IllegalThreadStateException NumberFormatException IllegalMonitorStateException IllegalStateException IndexOutOfBoundsException ArrayIndexOutOfBoundsException StringIndexOutOfBoundsException NegativeArraySizeException NullPointerException SecurityException UnsupportedOperationException

Lovljenje izjem: try-catch Java omogoča, da izjeme ulovimo. Če mislimo, da lahko v določenem delu kode pride do izjeme, jo postavimo v blok try-catch. class test { public static void main(string argv[ ]) { int x=6; int y=3; try { // Začetek bloka for (int j=1;j<=10;j++) { x=x*j/y; y=y-1; System.out.println("Rezultat je: " + y); catch (Exception e) { // Ujamemo izjemo System.out.println("Prislo je do napake!");

Lovljenje izjem: try-catch Če poznamo tipe izjem, ki se lahko zgodijo, lahko po bloku try postavimo več catch blokov: try { for (int j=1;j<=10;j++) { x=x*j/y; y=y-1; System.out.println("Rezultat je: " + y); catch (java.lang.arithmeticexception e) { // Ujamemo aritm. izjemo System.out.println("Prislo je do aritmetične napake!"); catch (Exception e) { // Ujamemo ostale izjeme System.out.println("Prislo je do neke napake!");

Lovljenje izjem: try-catch-finally Po bloku catch lahko postavimo tudi blok finally, ki se bo izvršil v vsakem primeru, ne glede na to ali je do izjeme prišlo ali ne. Izvedel se bo tudi, če pride do izjeme v bloku catch!!! try { for (int j=1;j<=10;j++) { x=x*j/y; y=y-1; System.out.println("Rezultat je: " + y); catch (Exception e) { System.out.println("Prislo je do aritmetične napake!"); y=1/0; finally { // izvede se, ceprav je v catch prišlo do izjeme! System.out.println("To se izvede v vsakem primeru");

Stavek throws Ni potrebno, da vsakič postavljamo try-catch bloke. Za posamezne metode lahko s stavkom throws povemo, da v metodi lahko pride do neke izjeme. Tako se bo izjema prenesla na metodo, ki je to metodo klicala. Vse skupaj lahko poljubno gnezdimo. class racunaj { // deli lahko povzroci izjemo! static int deli(int x, int y) throws Exception { return x/y; class main { public static void main(string argv[ ]) { int a=3; int b=0; try { racunaj.deli(a,b); catch (Exception e) { System.out.println("Exception!!!");

Stavek throw Izjemo lahko povzročimo tudi sami s stavkom throw: class racunaj { // deli lahko povzroci izjemo! static int deli(int x, int y) throws Exception { if (y==0) // sami povzročimo napako! throw new Exception("Zgodila se je napaka"); else return x/y; class main { public static void main(string argv[ ]) { int a=3; int b=0; try { racunaj.deli(a,b); catch (Exception e) {System.out.println(e.getMessage());