Writing and throwing your own exceptions:

import java.awt.*;
import java.util.*;

public class ExceptionTest {

    public static void main(String [] args) 
	            throws LetterGradeException {
	LetterGrade lg1 = new LetterGrade("B");
	//LetterGrade lg2 = new LetterGrade("F-");
	System.out.println(lg1.lessThan("B"));
	System.out.println(lg1.lessThan("C-"));
	//System.out.println(lg1.lessThan("I"));
	
	LetterGrade lg3 = new LetterGrade(77.8);
	LetterGrade lg4 = new LetterGrade(40.3);
	LetterGrade lg5 = new LetterGrade(102.9);
    }

}

class LetterGrade {
    private String lettergrade;
    private static String [] possiblevalues = {"A","A-","B+","B","B-",
					    "C+","C","C-","D+","D",
					    "D-","F"};

    public LetterGrade(String letter) throws InvalidLetterGradeValueException {
	if (!isValid(letter)) {
	    throw new InvalidLetterGradeValueException(letter);
	}
	lettergrade = letter;
    }
    
    public LetterGrade(double percent) throws 
                       InvalidPercentGradeValueException{
	    if(percent > 100 || percent < 0){
		    throw new InvalidPercentGradeValueException(percent);
	    }
	    
	    // this should've been a WAY longer if/else sequence,
	    // but we have simplified it:
	    if(percent > 70){
		    lettergrade = "A";
	    } else {
		    lettergrade = "F";
	    }
    }

    public static boolean isValid(String letter) {
	for (int i = 0; i < possiblevalues.length; ++i) {
	    if (letter.equals(possiblevalues[i])) {
		return true;
	    }
	}
	return false;
    }

    public String getValue() {
	return lettergrade;
    }

    private int getIndex() {
	int inttemp = -1;
	    for (int i = 0; i < possiblevalues.length; ++i) {
		if (lettergrade.equals(possiblevalues[i])) {
		    inttemp = i;
		}
	    }
	return inttemp;
    }
    
    public boolean lessThan(String letter) throws InvalidLetterGradeValueException {
	    LetterGrade temp = new LetterGrade(letter);
	    return this.lessThan(temp);
    }
    
    public boolean lessThan(LetterGrade grade) {
	    boolean flag = false;
	    int thIndex = this.getIndex();
	    int grIndex = grade.getIndex();
	    if (grIndex < thIndex) {
		    flag = true;
	    }
	    return flag;
    }
}

class InvalidLetterGradeValueException extends LetterGradeException {

    public InvalidLetterGradeValueException(String letter){
	super("Value " + letter + " is out of range");
    }
}

class LetterGradeException extends Exception{
	
	public LetterGradeException(String message){
		super(message);
	}
}

class InvalidPercentGradeValueException extends LetterGradeException{
	
	public InvalidPercentGradeValueException(double percent){
		super("Value " + percent + " is out of range");
	}
}



This is an example from CSci 2101 course.