Мне нужно обработать недопустимые строки данных при импорте и синтаксическом анализе файла csv в Java. В случае, если моя программа не поддерживает конкретное значение c (например, профессор как профессия), должно быть сгенерировано исключение InvalidCharacteristicException. Моя программа должна обрабатывать такие исключения, выдавая предупреждение и показывая номер строки в файле конфигурации, где была обнаружена ошибка, но я не знаю, как получить общее количество строк моего файла CSV и обработать исключения для данных нескольких типов перечисления . Кроме того, я не совсем уверен, как получить точную строку, в которой произошла ошибка.
Вот, например, enum Profession и enum BodyType.
public enum Profession {
DOCTOR, CEO, CRIMINAL, HOMELESS, UNEMPLOYED , UNKNOWN, NONE;
}
public enum BodyType {
SLIM, OBESE, ATHLETIC, UNSPECIFIED;
}
Вот как выглядит csv .
[0], [1], [2], [3] , [4] , [5] , [6] , [7] , [8] , [9]
class, gender, age, bodyType, profession, pregnant, isYou ,species, isPet, role
scenario:green, , , , , , , ,
person, female, 24, average , , FALSE , , , , passenger
animal, male , 4, , , FALSE , , dog , TRUE , pedestrian
.
.
Вот что я думаю и что пробовал. Вот мое собственное исключение.
public class InvalidCharacteristicException extends Exception
{
public InvalidCharacteristicException()
{
super("WARNING: invalid characteristic in config file in line" +
+ Thread.currentThread().getStackTrace()[1].getLineNumber());
}
}
Ниже приведена часть моего метода readCsv () и мои мысли.
File file = new File(csvFile);
FileReader fr = new FileReader(file);
BufferedReader br = new BufferedReader(fr);
String line = "";
String[] tempArr;
for (total rows of the csv file)
{
if (tempArr[3] is not BodyType.valueOf())
{
throw new InvalidCharacteristicException();
}
if (tempArr[4] is not Profession.valueOf())
{
throw new InvalidCharacteristicException();
}
}