Dúvida ao derivar a classe Exception

Caros amigos,
com o intuito de agrupar as exceções geradas pelo aplicativo criei a seguinte classe:

[code]
package lib.client.exc;

public class CException
{
public static class AppletIsNull extends Exception
{
public AppletIsNull()
{
super(“Applet não foi instanciado”);
}
}

    public static class ResourceNotFound extends Exception 
{															
	public ResourceNotFound()
	{
		super("Recurso indisponível");
	}
}

} [/code]
Fonte que lança a exceção:

[code]
package lib.client;

import lib.client.exc.CException;
import lib.client.exc.CException.AppletIsNull;

public class CClientCfg
{
private CApplet m_applet;

public void setApplet(CApplet applet)
{
	m_applet = applet;
}


public CApplet getApplet() throws AppletIsNull 
{
	if (m_applet == null) {
		throw new CException.AppletIsNull();
	}
	
	return m_applet;
}

} [/code]

Se eu não declarar a classe interna AppletIsNull como static o compilador no ponto do lançamento da exceção dá a seguinte mensagem:
“No enclosing instance of type CException is accessible. Must qualify the allocation with an enclosing instance of type CException”

Alguém saberia me dizer porquê a classe interna tem que ser static?

Não é que ela tem que ser statica, é porque se ela nao for statica vc precisa de uma instancia da classe Top Level para acessar a inner class.

So mais uma coisa, se nao fosse statica ficaria:

if (m_applet == null) { throw new CException().new AppletIsNull("sua msg"); }

:smiley:

Valeu!