User Tools

Site Tools


java:exceptions_try_with_resources

Differences

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

Link to this comparison view

java:exceptions_try_with_resources [2021/03/22 21:42]
gthanos
java:exceptions_try_with_resources [2021/03/22 21:44]
Line 1: Line 1:
-====== Δημιουργία αντικειμένων και εξαιρέσεις ====== 
- 
-Ας υποθέσουμε ότι έχουμε το παράδειγμα του ορθογωνίου παραλληλογράμμου που είχαμε συναντήσει και στο παρελθόν. Στα παραδείγματα που έχουμε δει μέχρι τώρα, το ορθογώνιο παραλληλόγραμμο λαμβάνει ως παραμέτρους ακέραιους για τις τιμές του πλάτους και το ύψους. Οι ακέραιοι αυτοί υποθέτουμε ότι είναι πάντα θετικοί. Τι θα συμβεί όμως αν κατά την κλήση του κατασκευαστή δοθεί αρνητικό όρισμα για το πλάτος ή το ύψος; Η κλήση του κατασκευαστή με ένα αρνητικό όρισμα θα δημιουργούσε λογικό πρόβλημα στο αντικείμενο που δημιουργείται. 
- 
-<WRAP tip 80% center round> 
-Επειδή οι κατασκευαστές δεν επιστρέφουν καμία τιμή, δεν υπάρχει η δυνατότητα να σηματοδοτηθεί ότι συνέβη κάποιο σφάλμα ή απέτυχε η αρχικοποίηση του αντικειμένου. Προκειμένου να αντιμετωπιστεί το παραπάνω πρόβλημα μπορούμε να χρησιμοποιήσουμε το μηχανισμό των εξαιρέσεων. 
-</WRAP> 
- 
-Στο παρακάτω παράδειγμα του ορθογωνίου παραλληλογράμμου κάθε φορά που δίνεται αρνητικό όρισμα ή μηδέν παράγεται μία εξαίρεση του τύπου [[https://docs.oracle.com/javase/7/docs/api/java/lang/IllegalArgumentException.html|java.lang.IllegalArgumentException]]. Η δημιουργία του αντικειμένου διακόπτεται και το πρόγραμμα μας συνεχίζει την εκτέλεση του έχοντας αποτύχει η αρχικοποίηση του αντικειμένου. 
- 
-<code java Rectangle.java> 
-public class Rectangle { 
-  int width, height; 
-   
-  public Rectangle(int width, int height) { 
-    if( width <= 0 || height <= 0) 
-      throw new IllegalArgumentException(); 
-    this.width = width; 
-    this.height = height; 
-  } 
-   
-  public int getWidth() { 
-    return width; 
-  } 
-   
-  public int getHeight() { 
-    return height; 
-  } 
-   
-  @Override 
-  public String toString() { 
-    return "width: "+width+", height: "+height; 
-  } 
-} 
-</code> 
- 
-<code java SafelyCreateRectangle.java> 
-import java.util.Scanner; 
- 
-public class SafelyCreateRectangle { 
-  public static void main(String []args) { 
-    Scanner sc = new Scanner(System.in); 
-     
-    while(true) { 
-      System.out.print("Width: "); 
-      int width = sc.nextInt(); 
-      System.out.print("Height: "); 
-      int height = sc.nextInt(); 
-      Rectangle r; 
-      try { 
-        r = new Rectangle(width, height); 
-        System.out.println(r); 
-        break; 
-      } 
-      catch(IllegalArgumentException ex) { 
-        System.out.println("Invalid Argument. Try again.."); 
-      } 
-    } 
-  } 
-} 
-</code> 
- 
-|Προηγούμενο: [[:java:exceptions_throwing | Δημιουργία και πυροδότηση εξαιρέσεων]] | [[ :toc | Περιεχόμενα ]]| Επόμενο: [[:java:exception_categories | Κατηγορίες Εξαιρέσεων ]]| 
  
java/exceptions_try_with_resources.txt · Last modified: 2021/03/22 21:44 (external edit)