Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Обратотка исключений внутри цикла 
:(
    Опции темы
diktator
Дата 12.8.2011, 23:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 81
Регистрация: 27.5.2010

Репутация: нет
Всего: нет



Здраствуйте. Подскажите как обрабатывать исключения внутри цикла так сказать без остановки производства. То есть читаю файл и прогоняю его циклом, уже 1 исключение есть на открытие файла которое покрывает весь цикл. А как внутри цикла?

К примеру код, из одного большого файла записываем в другой строки которые короче заданного знач.

Код

...
try {
            client.executeMethod(get);
            
            BufferedReader reader = new BufferedReader(new InputStreamReader(
                    get.getResponseBodyAsStream()));
            
            FileOutputStream out = new FileOutputStream("D:/file.txt");
            
            String line;
            
            int cD = 100;
            
            String n = System.getProperty("line.separator");            
            
            while ((line = reader.readLine()) != null) {
                if(line.length()<cD){
                    out.write(line.getBytes());
                    out.write(n.getBytes());
                }
            }
            reader.close();  
            
            out.close();
            
            
        } catch (Exception ex) {
            System.out.println(ex);
        }


Часть файла записывается и выбрасывает исключение java.io.IOException: chunked stream ended unexpectedly. Как его правильно обработать и вообще что это за ошибка такая на пустом месте?
PM MAIL   Вверх
diktator
Дата 13.8.2011, 16:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 81
Регистрация: 27.5.2010

Репутация: нет
Всего: нет



Ребята а как правильнее писать исключение в методе класса или же в вызове.  Просто в методе же потом никак не отследишь вызвало ошибку или нет. Или в джаве можно выбрасывать исключения самому?

PM MAIL   Вверх
Farmazon
Дата 13.8.2011, 17:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Разработчик
**


Профиль
Группа: Участник
Сообщений: 265
Регистрация: 7.7.2006

Репутация: 1
Всего: 5



можно самому выбрасывать исключение

например:
Код

throw new RuntimeException("FUCKUP!!!1");



--------------------
Таково моё общее мнение.
PM MAIL WWW   Вверх
diktator
Дата 13.8.2011, 18:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 81
Регистрация: 27.5.2010

Репутация: нет
Всего: нет



Farmazon, спасибо большое, а то подробно про исключения не видел.
PM MAIL   Вверх
Farmazon
Дата 14.8.2011, 09:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Разработчик
**


Профиль
Группа: Участник
Сообщений: 265
Регистрация: 7.7.2006

Репутация: 1
Всего: 5





--------------------
Таково моё общее мнение.
PM MAIL WWW   Вверх
Klio
Дата 14.8.2011, 14:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 111
Регистрация: 18.4.2008
Где: Харьков - СС_3

Репутация: нет
Всего: 1



Привожу пример если файл не маленький и работа с данными очень скурпулёзна
НО брал операции из этой темы:
Код

try{                              // внешний try  (назовём его обработчик 1 уровня)
...
while ((line = reader.readLine()) != null) {
    try{                         // встроенный try ( обработчик 2 уровня)
        if(line.length()<CD){                   // первая операция
            try{                                         // (обработчик 3 уровня)
                out.write(line.getBytes());  // вторая операция 
            }catch(aaaException e){
                // обработка мелких аналитических и синтаксических неровностей файла
            }catch(bbbException e){// обработка возможной ошибки более глобального характера
                // выход из программы или вызов RuntimeException для обработки catch более 
                // высокого уровня 3 -> 2 -> 1 -> абзац
                throw new RuntimeException("FUCKUP!!!"); //  как вариант
            }catch(Exception e){
                System.err.print("пропускаем ошибку и шагаем дальше");
                // делаем значение или default функцию
            }
            out.write(n.getBytes()); // с этой можем сделать также
        }
    }catch(Exception e){
        if (e.getMessage.equals("FUCKUP!!!")){
             // обработка ошибки третьего уровня которую вызывали мы сами
        }
        else{/*любые другие ошибки обрабатываются как нибудь по другому*/}
    }
}catch(Exception e){System.err.print("Global trouble")}

[aaaException и bbbException - любые специфические ошибки]
Я так делал пару раз у меня доходило до 4 уровня все ошибки срабатывали при различных параметрах самой OS платформ  fat ntfs и других поточных изменений
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0581 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.