Какое исключение использовать для FileWriter - PullRequest
0 голосов
/ 11 апреля 2011

У меня есть программа, которая позволяет пользователю записывать информацию в файл.Он не переписывает все в исходном файле, но добавляет к нему.Дело в том, что если пользователь не вводит достаточно информации, происходит сбой программы.

Каждая строка в текстовом файле выглядит примерно так:

info 1, Info 2, info 3, info 4, info 5, info 6, info 7

Каждая строка содержит шесть запятых и семь фрагментов информации.Итак, мне нужно знать, какое исключение использовать для предотвращения сбоя, если, скажем, пользователь вводит только 4 элемента информации или использует только две запятые и т. Д. Кто-нибудь знает, как это сделать?:

private void addDVDButtonActionPerformed(java.awt.event.ActionEvent evt) {                                             
    FileWriter fWriter = null;
    BufferedWriter writer = null;
    try {
        fWriter = new FileWriter("info.txt", true);
        writer = new BufferedWriter(fWriter);

        writer.write(JOptionPane.showInputDialog(this, "ADDING INFO"));
        writer.newLine();
        writer.close();
    } catch (Exception e) {
        JOptionPane.showMessageDialog(this,"More information required");
    }
}                        

Ответы [ 2 ]

1 голос
/ 11 апреля 2011

Не бросайте исключения. Подтвердите введенные пользователем данные и запишите их в файл, только если они действительны.

0 голосов
/ 11 апреля 2011

Как бы я это проверил? Это то, на чем я застрял.

Например, используя String.split(","), что даст вам String[], на котором вы можете проверить, если String[].length == 7.

edit: просто чтобы убедиться, что это не полное решение вашей проблемы, а хорошая отправная точка. Я полностью согласен со всеми другими комментариями / ответами, выбрасывать исключение излишне.

edit 2: Предположим, что пользователь дал следующую строку в качестве ввода, и вы хотите проверить ее перед записью в файл:

String str = "a1,b2,c3,d4,e5,f6";

как видите, эта строка имеет шесть элементов и пять запятых, другими словами, она должна предупреждать пользователя. Очень простой способ проверить это будет:

if (str.split(",").length != 7) // checks if the string is comma delimited and has seven pieces of information
    warnUser();   // whatever you want to do to warn user
else 
    writeToFile(str);

обратите внимание, что это просто показывает принцип, в вашем случае вы можете (и, вероятно, захотите) проверить другие вещи, такие как форматирование, или что у вас есть буквенно-цифровой текст, без подчеркивания или что-то еще. Если у вас есть много условий, которые вы хотите проверить, вы можете написать метод validateInput(str), который может быть серией проверок условий и возвращает true, только если все условия проверены.

...