Я хочу обрабатывать недопустимые строки данных при импорте и анализе файла csv в Java. В случае, если моя программа не поддерживает определенное значение c (например, профессор как профессия), должно быть выброшено исключение InvalidCharacteristicException. Моя программа должна обрабатывать такие исключения, выдавая предупреждение и показывая номер строки в конфигурационном файле, где была обнаружена ошибка. Я пытался выдать каждое перечисление с помощью try-catch.
Вот мои данные перечисления.
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(int configLineNum)
{
super("WARNING: invalid characteristic in config file in line" +
+ configLineNum);
}
}
Ниже приведена часть моего метода readCsv () и того, что я пробовал.
File file = new File(csvFile);
FileReader fr = new FileReader(file);
BufferedReader br = new BufferedReader(fr);
String line = "";
String[] tempArr;
try{
if (BodyType.valueOf().toLowerCase() != tempArr[3]){
throw new InvalidCharacteristicException();
}
}catch(InvalidCharacteristicException e){
InvalidCharacteristicException();
}
try{
if (Profession.valueOf().toLowerCase() != tempArr[4]){
throw new InvalidCharacteristicException();
}
}catch(InvalidCharacteristicException e){
InvalidCharacteristicException()
}
Вот как я хочу, чтобы этот код изменился. что код выполняет итерацию по всем строкам файла csv и находит номер строки, в которой возникает ошибка исключения ..
for (total rows of the csv file)
{
if (tempArr[3] != BodyType.valueOf().toLowerCase())
{
throw new InvalidCharacteristicException();
}
if (tempArr[4] != Profession.valueOf().toLowerCase())
{
throw new InvalidCharacteristicException();
}
}