Presentation is loading. Please wait.

Presentation is loading. Please wait.

CSC 243 – Java Programming, Fall, 2008

Similar presentations


Presentation on theme: "CSC 243 – Java Programming, Fall, 2008"— Presentation transcript:

1 CSC 243 – Java Programming, Fall, 2008
Thursday, October 23, start of week 9, Exceptions, Events, and Generic Classes

2 Exception constructs already in use
try { attempt to run a block of code } catch (Type_A_Exception taex) { Do something with taex, e.g., taex.getMessage() } catch (Type_A_Exception tbex) { Do something with tbex, e.g., print, then throw tbex } finally { Do this after all of the above, even after a return! }

3 Unchecked and checked exceptions
javac forces client code to catch checked exceptions unchecked exceptions need not be caught; they can be java.lang.Error java.io.IOError – maybe a disk drive goes off line java.lang.RuntimeException java.lang.NullPointerException Other java.lang.Exceptions are checked

4 Throwing a new exception
An explicit throw creates a new Exception. public int deleteTiles(String tileset) throws ScrabbleException throw new ScrabbleException("Player " + name + " does not have " + tile.toString() + " to delete from set of tiles.");

5 Rethrowing an exception
A rethrow catches and handles an Exception object, then throws it again. } catch (NumberFormatException nx) { System.err.println(“Exception: “ + nx.getMessage(); nx.printStackTrace(); // to System.err throw nx ; // This is the rethrow

6 An implicit throw An implicit throw allows a called method to throw an Exception via the calling method. public String [][] move(String command) throws ScrabbleException Invokes “int used = players[nextPlayer].deleteTiles(validword); But move() does not catch deleteTiles’s exception: public int deleteTiles(String tileset) throws ScrabbleException The remove() implicitly throws deleteTile’s exception.

7 A Chained Exception A chained Exceptions tacks a detail message onto an underlying cause Exception. } catch (NumberFormatException nx) { throw new Exception(“detail message”, nx); Used to prepend a context-specific message to an Exception thrown from a called method. The new Exception must have the appropriate constructor. It may be a custom Exception.

8 Custom Exceptions A custom Exception inherits, directly or indirectly, from java.lang.Exception. public class ScrabbleException extends Exception public ScrabbleException(String text) super(text); // Call to base class constructor. Client code can explicitly catch a custom Exception.

9 Event-driven Programming
Event-driven program is not driven by a sequence of imperative program statements. Instead, a program constructs a set of event handlers that can respond to external events. User interface actions (mouse click, key click, timer, …) State change in an event-driven simulation The program then connects the event sources to the its events handlers, waits for events. An event source later sends an event object.

10 Java Event Mechanisms Interface java.util.EventListener tags an Object that implements that interface as an Object that can handle an event. Most of the library EventListeners are handlers for GUI events. Class java.util.EventObject is a helper base class that provides some storage for an event. Many of these are GUI oriented as well. Event sources do not have a special interface.

11 Adding Events to Scrabble
~parson/JavaLang/evtscrabble public class ScrabbleScoreEvent extends java.util.EventObject Adds a message and score to a basic EventObject. interface ScrabbleScoreEventListener extends java.util.EventListener void notifyHighEvent(ScrabbleScoreEvent event) A class that implements ScrabbleScoreEventListener provides code for notifyHighEvent.

12 Sending Events The board sends an Event every time a new highest PUT occurs. A player sends an Event when that player pulls into the lead. ScrabbleBoard.putWord if (score > highscore) { // See lines 79, , ScrabblePlayer.addScore if (score > leadscore) { // See lines 20, 49-52,

13 Receiving Events Inside class ScrabbleUI:
private static class ScrabbleUIListener implements ScrabbleScoreEventListener { public void notifyHighEvent(ScrabbleScoreEvent event) game = new ScrabbleGame(playernames, filetorestore, seed, System.out, System.err, new ScrabbleUIListener()); ScrabbleGame passes ScrabbleUIListener reference down to ScrabbleBoard and ScrabblePlayer.


Download ppt "CSC 243 – Java Programming, Fall, 2008"

Similar presentations


Ads by Google