User Tools

Site Tools


java:exceptions_try_catch_block

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision Both sides next revision
java:exceptions_try_catch_block [2021/03/22 15:53]
gthanos
java:exceptions_try_catch_block [2021/03/22 16:04]
gthanos [Finaly Block]
Line 113: Line 113:
 } }
 </code> </code>
 +
 +===== Try with resources block =====
 +
 +Η Java παρέχει τη δυνατότητα για αυτόματo κλείσιμο των αντικειμένων που οι κλάσεις τους υλοποιούν το interface [[https://docs.oracle.com/javase/7/docs/api/java/lang/AutoCloseable.html|AutoClosable]]. Οι κλάσεις που υλοποιούν το συγκεκριμένο interface συνδέονται συνδέονται με την διαχείριση πόρων όπως αρχεία, διάβασμα και γράψιμο στην κονσόλα, άνοιγμα υποδοχέων (sockets) ή άλλων πόρων για την επικοινωνία με απομακρυσμένα σημεία.
 +
 +Η κλάση [[https://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html|Scanner]] υλοποιεί το συγκεκριμένο interface. Ας δούμε πως διαμορφώνεται ο προηγούμενος κώδικας εκμεταλλευόμενος την επιπλέον δυνατότητα του interface  [[https://docs.oracle.com/javase/7/docs/api/java/lang/AutoCloseable.html|AutoClosable]].
 +
 +<code java ExceptionHandling.java>
 +import java.util.Scanner;
 +import java.util.NoSuchElementException;
 +import java.util.InputMismatchException;
 +
 +public class ExceptionHandling {
 +  
 +  public static void main(String []args) {
 +    
 +    try (Scanner sc = new java.util.Scanner(System.in)){
 +      System.out.print("Width: ");
 +      int width = sc.nextInt();
 +      System.out.print("Height: ");
 +      int height = sc.nextInt();
 +      double ratio = width / (double)height;
 +      System.out.format("Ratio: %.2f", ratio);
 +    } catch(InputMismatchException ex) {
 +      System.out.println("Input doen not match integer value.");
 +    } catch(NoSuchElementException ex) {
 +      System.out.println("You have closed the input from command line.");
 +    }
 +  }
 +}
 +</code>
 +
 +Παρατηρήστε ότι τα αντικείμενα που θέλουμε να κλείσουν αυτόματα τα δημιουργούμε μέσα σε παρενθέσεις, αμέσως μετά το try block. Η μεταβλητή sc έχει εμβέλεια εντός του try block και όχι έξω από αυτό. Με την ολοκλήρωση του try block, είτε συμβεί εξαίρεση, είτε δεν συμβεί το αντικείμενο sc (τύπου Scanner) θα κλείσει αυτόματα από το JVM.
  
 |Προηγούμενο: [[:java:exceptions_intro| Εξαιρέσεις ]] | [[ :toc | Περιεχόμενα ]] | Επόμενο: [[:java:exceptions_thrown_by_methods | Χειρισμός της εξαίρεσης σε υψηλότερο επίπεδο ]]| |Προηγούμενο: [[:java:exceptions_intro| Εξαιρέσεις ]] | [[ :toc | Περιεχόμενα ]] | Επόμενο: [[:java:exceptions_thrown_by_methods | Χειρισμός της εξαίρεσης σε υψηλότερο επίπεδο ]]|
  
  
java/exceptions_try_catch_block.txt · Last modified: 2021/03/23 07:29 by gthanos