Let's conclude this section by discussing inheritance and OWN EXCEPTIONS. In Java, a 'new exception class' can be defined by inheriting class Exception. Usually, it's enough to define a constructor which gets a message (a String) as an argument and then calls the super class constructor. Consider the following example: class TooLongMessageException extends Exception { public TooLongMessageException(String message) { super(message); } } Own exception can be thrown like any other exception. Note that a method that may throw a 'checked exception', must declare this with the 'throws' keyword. This also concerns the constructor. class TextMessage { private String sender; private String recipient; private String message; public TextMessage(String sender, String recipient, String message) throws TooLongMessage { this.sender = sender; this.recipient = recipient; setMessage(message); } // METHOD 'throws' OUR OWN CUSTOM-DEFINED EXCEPTION public void setMessage(String message) throws TooLongMessage { if (message.length() > 160) { throw new TooLongMessageException("Maximum length is 160 characters"); } this.message = message; } } An exception like this needs to be caught when the method is called: public static void main(String[] args) { Scanner reader = new Scanner(System.in); while (true) { System.out.print("Give sender, empty line exits: "); String sender = reader.nextLine(); if (sender.equals("")) { break; } System.out.print("Give recipient: "); String recipient = reader.nextLine(); System.out.print("Give message: "); String message = reader.nextLine(); // TRY-CATCH TO CATCH EXCEPTION 'e' try { TextMessage textMessage= new TextMessage(sender, recipient, message); } catch (TooLongMessageException e) { System.out.println("Could not create a message: " + e.getMessage()); } } }