Im wondering is this the most efficient way to use exception handling. Ive got a Super class, location and 2 subclass’s called shop and person.
The location class throws a custom exception called lesson1exception, which is just a string informing the used of the exception.
However I notice the city class, which is my static main args class, where my try and catch is has to throw the exception as well but so do both my sub classes for me to get no error.

Is this normal, do I need to have every sub class constructor throwing the super class exception or is there a better way to do this?
Main class
Java Code:
public static void main(String[] args) throws lesson1exception {
try {
	kell = new Shop("kell","noreth");
} catch (lesson1exception e1) {
	// TODO Auto-generated catch block
	e1.printStackTrace();
		}
My shop class constructor
Java Code:
public class Shop extends location {
private String name;
public int age=0; 

//this is my constructor sets the name and the location name
public Shop(String string,String l) throws lesson1exception {
	
	// TODO Auto-generated constructor stub
	//super calls the constructor for the location class
	//NOTE-i think this is a waste since location is created without verifing validity first
	super(l);

	name=string;
	}
My super location class
Java Code:
public class location {
protected String locationname;
//this is where i throw my exception for location error
public location(String l) throws lesson1exception{
	if(l=="north"||l=="south"||l=="east"||l=="west")
		this.locationname=l;
	else
		throw new lesson1exception(l);
}