Обработка исключений дополнительного атрибута из текстового файла - PullRequest
0 голосов
/ 02 мая 2019

Создание пользовательского класса исключений для случая, когда дополнительный атрибут считывается из текстового файла, разделенного запятой. Дополнительное значение выбрасывается, но я хотел бы прочитать следующую строку из текстового файла. Читаемый файл содержит идентификатор для читаемой фигуры и для этого конкретного примера радиус круга.

Я пробовал использовать вложенную попытку, но она кажется утомительной и создаст больше проблем.

    try
    {   
        Scanner reader = new Scanner(new File("shapes.txt"));
        while(reader.hasNextLine())
        {
            String line = reader.nextLine();
            String[] array = line.split(",");

            if(array[0].equalsIgnoreCase("c"))
            {
                radius = Double.parseDouble(array[1]);
                Shape cir = new Circle(radius);
                shapeArray.add(cir);
                if(array.length > 2)
                {
                    throw new ExtraAttributeException();
                }
            }

        }
    }
    catch(FileNotFoundException e)
    {
        System.out.println("File Not Found");
    }
    catch(ExtraAttributeException e)
    {
        System.out.println(e.getMessage());
    }

Я бы хотел, чтобы программа продолжила чтение следующей строки после обработки исключений.

Ответы [ 2 ]

0 голосов
/ 02 мая 2019

Необходимо закрыть ресурс ввода-вывода.
попробуйте следующее:

try(Scanner reader = new Scanner(new File("shapes.txt"))) {
    while (while(reader.hasNextLine())) {
        try {  
            String line = reader.nextLine();
            String[] array = line.split(",");

            if(array[0].equalsIgnoreCase("c"))
            {
                radius = Double.parseDouble(array[1]);
                Shape cir = new Circle(radius);
                shapeArray.add(cir);
                if(array.length > 2)
                {
                    throw new ExtraAttributeException();
                }
            }
        }
        catch(ExtraAttributeException e)
        {
            System.out.println(e.getMessage());
        }
    }
} catch(FileNotFoundException e) {
    System.out.println("File Not Found");
} catch(Exception e) {
    System.out.println(e.getMessage());
}
0 голосов
/ 02 мая 2019

Поместите попытку / улов ExtraAttributeException в ваш цикл. Это единственный способ.


try
{
    Scanner reader = new Scanner(new File("shapes.txt"));
    while(reader.hasNextLine())
    {
        try
        {  
            String line = reader.nextLine();
            String[] array = line.split(",");

            if(array[0].equalsIgnoreCase("c"))
            {
                radius = Double.parseDouble(array[1]);
                Shape cir = new Circle(radius);
                shapeArray.add(cir);
                if(array.length > 2)
                {
                    throw new ExtraAttributeException();
                }
            }
        }
        catch(ExtraAttributeException e)
        {
            System.out.println(e.getMessage());
        }
    }
}     
catch(FileNotFoundException e)
{
    System.out.println("File Not Found");
}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...