![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| марина |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 97 Регистрация: 2.8.2006 Репутация: нет Всего: нет |
При попытке открыть не хмл файл, бросается [Fatal Error] testAnotherFile.txt:1:1: Content is not allowed in prolog
как это ловить? и надо ли? никак не могу убрать, чтобы не писалось это |
|||
|
||||
| Hidrag |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 877 Регистрация: 9.4.2005 Где: JDK Репутация: 3 Всего: 25 |
Текст программы в студию! -------------------- |
|||
|
||||
| nornad |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1079 Регистрация: 16.2.2007 Где: в Караганде Репутация: 16 Всего: 31 |
марина, выложи код, с помощью которого открываешь файл. Да и сам файл тоже не мешает увидеть.
Иначе разговор из разряда:
-------------------- Три достоинства программиста: Леность, Нетерпение и Гордость Ларри Уолл |
|||
|
||||
| марина |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 97 Регистрация: 2.8.2006 Репутация: нет Всего: нет |
я думала что это какая-то общая ошибка, о которой все знают...
код большой, но вот примерчик маленький написала Чтобы считать документ
пытаюсь открытоь просто любой файл без хмл заголовка к примеру текстовый файл testAnotherFile.txt в котором написано только "marina" бросает если распечатать стек трейс это: [Fatal Error] testAnotherFile.txt:1:1: Content is not allowed in prolog. Ошибка при чтении1org.xml.sax.SAXParseException: Content is not allowed in prolog. org.xml.sax.SAXParseException: Content is not allowed in prolog. at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:264) at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:292) at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:172) at reader.Reader.<init>(Reader.java:25) at Main.readDiagram(Main.java:18) at Main.main(Main.java:44) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at com.intellij.rt.execution.application.AppMain.main(AppMain.java:86) вопрос: как убрать это [Fatal Error] testAnotherFile.txt:1:1: Content is not allowed in prolog.? |
||||
|
|||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Текстовый файл, в котором написано только "marina", не является валидным XML документом. Отсюда и ошибка. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| nornad |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1079 Регистрация: 16.2.2007 Где: в Караганде Репутация: 16 Всего: 31 |
Так и есть. Только никто же не знал, как ты пыталась открывать файл. Ты при открытии скармливаешь файл SAXParser'у. Естественно, он ожидает XML-файл. Не найдя такового он и ругается. Почему бы не открывать простые текстовые файлы просто как текст? -------------------- Три достоинства программиста: Леность, Нетерпение и Гордость Ларри Уолл |
|||
|
||||
| марина |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 97 Регистрация: 2.8.2006 Репутация: нет Всего: нет |
а как проверять простой или нет это файл?
а если у меня там пользователь вообще картинку открыть захочет? Добавлено через 53 секунды и Fatal Error - можно расказать что это такое? и можно ли это отловить? |
|||
|
||||
| nornad |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1079 Регистрация: 16.2.2007 Где: в Караганде Репутация: 16 Всего: 31 |
Ну, для начала, хотя бы, по расширению файла.
-------------------- Три достоинства программиста: Леность, Нетерпение и Гордость Ларри Уолл |
|||
|
||||
| марина |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 97 Регистрация: 2.8.2006 Репутация: нет Всего: нет |
а не поначалу
|
|||
|
||||
| nornad |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1079 Регистрация: 16.2.2007 Где: в Караганде Репутация: 16 Всего: 31 |
А не поначалу - можно открывать файл сначала как байтовый массив, смотреть, что в нём (как минимум - заголовок формата), а потом уже либо открывать файл нужным способом, либо ругать о неподдерживаемом формате.
Только я не понимаю, зачем такие сложности? Намного проще открывать по расширению и если попытка не удалась (отлов исключений сделать можешь, надеюсь) - ругаться, что формат файла не соответствует ожиданиям. Или ещё проще - из контекста обычно можно сделать предположение, какого типа файл должен открываться. Например, если мы хотим запихнуть содержимое файла в текстовый редактор, то файл явно должен быть текстовым, а не экзешником или картинкой. И снова - если упали, то ругаемся. P.S. Не надо пытаться решать за пользователя всё - в 99.9999999999999999% это будет только во вред. -------------------- Три достоинства программиста: Леность, Нетерпение и Гордость Ларри Уолл |
|||
|
||||
| марина |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 97 Регистрация: 2.8.2006 Репутация: нет Всего: нет |
ну к примеру я сохраняю и могу открывать только файлы со своим расширением .net , но вдруг тот файл который открою поврежден ... и его хмл заголовок отсутствует...
кинется fatal error те не надо думать о таких случаях? |
|||
|
||||
| nornad |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1079 Регистрация: 16.2.2007 Где: в Караганде Репутация: 16 Всего: 31 |
Блин, ты читаешь внимательно?
-------------------- Три достоинства программиста: Леность, Нетерпение и Гордость Ларри Уолл |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Ты просто в том месте где будешь парсить файл, поставь блок try/catch и если произойдет ошибка, выдай пользователю сообщение, что файл имеет неправильный формат или поврежден. Пусть выберет другой файл. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| марина |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 97 Регистрация: 2.8.2006 Репутация: нет Всего: нет |
Исключение я поймаю и все выведу, не в том было дело
вот что пришлось написать что бы fatal error не писалось в консоли
а случай что фаил с моим расширением может быть не просто поврежден, но без хмл заголовка(а именно тогда и появиться этот фатал) очень даже может быть, просто у меня сложилось впечатление будто меня не понимают, и я что-то плохо обьяснила |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Что ты подразумеваешь под: без хмл заголовка?
Если ты имеешь в виду, без пролога:
то такие документы нормально парсятся. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |