Если бы мне пришлось угадывать, что происходит, основываясь на фрагменте кода, который вы разместили, ошибка, вероятно, вызвана тем, что вы пытаетесь выбросить ParenthesisException
из static
метода.
В Java классы, определенные внутри другого класса, автоматически сохраняют указатель на объект, внутри которого они были созданы.То есть ParenthesisException
имеет неявный указатель на класс включения, внутри которого он был создан с помощью new
.Это означает, что, в частности, вы не можете создать new ParenthesisException
внутри метода static
, потому что нет указателя this
, который можно использовать для ссылки на содержащий класс.
Чтобы это исправить, вы должны сделать ParenthesisException
static
внутренний класс следующим образом:
private static class ParenthesisException extends Throwable
{
public ParenthesisException(){}
public String strErrMsg()
{
return "ERROR: Every '(' needs a matching ')'";
}
}
Этот static
после private
говорит о том, что ParenthesisException
не содержит ссылку обратно на вмещающий объектчто, вероятно, то, что вы хотели в любом случае.Это также означает, что вы можете создавать new ParenthesisException
s внутри статических методов.
Надеюсь, что это предположение верно, и надеюсь, что это поможет!