У меня есть два класса синтаксического анализатора, и я хочу выдать исключение при сбое синтаксического анализа.
Я хочу использовать то же исключение, ParserException, которое я хотел бы принять имя поля, которое вызвало сбой. Я думал использовать перечисления, но мне кажется, что тема не совсем понятна.
Как объявить fieldName в классе ParserException? enum, насколько я понимаю, должен быть супертипом для ParserA.Fields и ParserB.Fields, но не принимается.
Обратите внимание, что два перечислимых класса содержат различный набор перечислений , т. Е. Они не являются одним и тем же классом.
public class ParserA {
public enum Fields {
A_FIRST_FIELD
A_SECOND_FIELD
}
public void parse() {
...
throw ParserException(Fields.A_FIRST_FIELD);
}
}
public class ParserB {
public enum Fields {
B_FIRST_FIELD
B_SECOND_FIELD
}
public void parse() {
...
throw ParserException(Fields.B_FIRST_FIELD);
}
}
// Parser error
public class ParserException extends Exception {
enum fieldName; // ????? what goes here?
public ParserException(enum e) {
this.fieldName = e;
}
public enum getFieldName() { // ?????? how do I do something like this?
return fieldName;
}
}