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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Exception, Вывод ошибок 
:(
    Опции темы
LAKERS
Дата 4.5.2006, 14:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 156
Регистрация: 10.2.2006
Где: Москва

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



нужно следующее: если ошибка формата java.lang.NullPointerException , то вывести сообщение по русски "Ошибка ...(такая-то) " если ошибка java.io.FileNotFoundException, то вывести сообщение об этой ошибке....как это сделать?
Код
try
{...}
catch (Exception e)
{
     if (???)
    {
    ???????????
    }
}
 
PM MAIL ICQ   Вверх
allex
Дата 4.5.2006, 14:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



LAKERS, завести Map, положить туда пары: класс ошибки -> строка. Ну и выбирать потом.  
PM MAIL   Вверх
ShamanTrirukiy
Дата 4.5.2006, 14:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Обычно исключения обрабатывают так:
Код

try{
  ...
}catch (java.lang.NullPointerException npe){
  //вывести сообщение по русски "Ошибка ...(такая-то) 
}catch (java.io.FileNotFoundException fnfe){
  //вывести сообщение об этой ошибке
}catch(Exception e){
  //обработка остальных исключений, если таковые имеются
}
 
 

Это сообщение отредактировал(а) ShamanTrirukiy - 4.5.2006, 14:38
PM MAIL   Вверх
ALKS
Дата 4.5.2006, 14:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



стандартные исключения по-моему можно изначально локализовать на уровне jre. у меня они например все на немецком сыпяться.  если на немецком можно, то и на русском тоже должно палить и без всякого специального кода 
PM   Вверх
LAKERS
Дата 5.5.2006, 09:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 156
Регистрация: 10.2.2006
Где: Москва

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



Цитата(ALKS @  4.5.2006,  14:55 Найти цитируемый пост)
стандартные исключения по-моему можно изначально локализовать на уровне jre. у меня они например все на немецком сыпяться.  если на немецком можно, то и на русском тоже должно палить и без всякого специального кода

и каким образом с русским это провернуть можно?
 
PM MAIL ICQ   Вверх
ShamanTrirukiy
Дата 5.5.2006, 11:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(LAKERS @  5.5.2006,  09:03 Найти цитируемый пост)
и каким образом с русским это провернуть можно

поидее, если пойман, например, Exception e, то e.getLocalizedMessage() должен вернуть сообщение на языке, установленном by default. 
PM MAIL   Вверх
ALKS
Дата 5.5.2006, 18:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Код

public String getLocalizedMessage() {
        return getMessage();
    }


этот код из класса Throwable smile
если вы еще не поняли мы в анусе. локализировать классы исключения можно только в наследниках путем оverride этой функции.
но уже имеющиеся дефолтные исключения так локализировать не удасться. ибо они изначально не поддерживают локализированный метод.... 


В догонку- начитался массу ругани по этому поводу в нете smile 

Это сообщение отредактировал(а) ALKS - 5.5.2006, 20:40
PM   Вверх
ShamanTrirukiy
Дата 6.5.2006, 12:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(ALKS @  5.5.2006,  18:23 Найти цитируемый пост)
если вы еще не поняли 

Еще как понял. Приношу свои извинения за сказанную глупость. Просто где-то читал данное изречение, сам работаю с английским, а исходники не посмотрел smile 
ALKS, спасибо за науку - в следующий раз буду аккуратней. 

P.S. Сори за оффтоп  

Это сообщение отредактировал(а) ShamanTrirukiy - 6.5.2006, 12:30
PM MAIL   Вверх
ALKS
Дата 6.5.2006, 12:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



ндя... собственно как выясняеться в API Doc класса Throwable( http://java.sun.com/j2se/1.5.0/docs/api/ja...alizedMessage() ) прямо написано:

public String getLocalizedMessage()
Creates a localized description of this throwable. Subclasses may override this method in order to produce a locale-specific message. For subclasses that do not override this method, the default implementation returns the same result as getMessage().
RTFM и нефиг в исходниках ковыряться...

кстати очень познавательная серия статей по теме:
http://www.javaworld.com/javaworld/jw-08-2...exceptions.html?
 
PM   Вверх
ShamanTrirukiy
Дата 6.5.2006, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(ShamanTrirukiy @  6.5.2006,  12:22 Найти цитируемый пост)

Еще как понял.

Честное слово, читать умею. 
Цитата(ALKS @  6.5.2006,  12:54 Найти цитируемый пост)
нефиг в исходниках ковыряться

В исходниках тоже есть комментарии 
Цитата

Код

/**
     * Creates a localized description of this throwable.
     * Subclasses may override this method in order to produce a
     * locale-specific message.  For subclasses that do not override this
     * method, the default implementation returns the same result as
     * <code>getMessage()</code>.
     *
     * @return  The localized description of this throwable.
     * @since   JDK1.1
     */

 и смотреть их очень даже полезно, но я 
Цитата(ShamanTrirukiy @  6.5.2006,  12:22 Найти цитируемый пост)
исходники не посмотрел

P.S. Еще раз сори за оффтоп.
P.P.S. Также очень многое по этому поводу есть у С.Стелтинга в Java без сбоев. Обработка исключений, тестирование, отладка - книга от Sun Microsystems, НЯМС очень полезная...
  

Это сообщение отредактировал(а) ShamanTrirukiy - 6.5.2006, 13:16
PM MAIL   Вверх
ShamanTrirukiy
Дата 6.5.2006, 13:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Так вот, тот самый Стелтинг советует при локализации Exception-а использовать LocaleСмотрим исходники и наблюдаем там следующий перечень языков, поддерживаемых при локализации:
Цитата

Код

/** Useful constant for language.
     */
    static public final Locale ENGLISH = new Locale("en","","");

    /** Useful constant for language.
     */
    static public final Locale FRENCH = new Locale("fr","","");

    /** Useful constant for language.
     */
    static public final Locale GERMAN = new Locale("de","","");

    /** Useful constant for language.
     */
    static public final Locale ITALIAN = new Locale("it","","");

    /** Useful constant for language.
     */
    static public final Locale JAPANESE = new Locale("ja","","");

    /** Useful constant for language.
     */
    static public final Locale KOREAN = new Locale("ko","","");

    /** Useful constant for language.
     */
    static public final Locale CHINESE = new Locale("zh","","");

    /** Useful constant for language.
     */
    static public final Locale SIMPLIFIED_CHINESE = new Locale("zh","CN","");

    /** Useful constant for language.
     */
    static public final Locale TRADITIONAL_CHINESE = new Locale("zh","TW","");

    /** Useful constant for country.
     */
    static public final Locale FRANCE = new Locale("fr","FR","");

    /** Useful constant for country.
     */
    static public final Locale GERMANY = new Locale("de","DE","");

    /** Useful constant for country.
     */
    static public final Locale ITALY = new Locale("it","IT","");

    /** Useful constant for country.
     */
    static public final Locale JAPAN = new Locale("ja","JP","");

    /** Useful constant for country.
     */
    static public final Locale KOREA = new Locale("ko","KR","");

    /** Useful constant for country.
     */
    static public final Locale CHINA = new Locale("zh","CN","");

    /** Useful constant for country.
     */
    static public final Locale PRC = new Locale("zh","CN","");

    /** Useful constant for country.
     */
    static public final Locale TAIWAN = new Locale("zh","TW","");

    /** Useful constant for country.
     */
    static public final Locale UK = new Locale("en","GB","");

    /** Useful constant for country.
     */
    static public final Locale US = new Locale("en","US","");

    /** Useful constant for country.
     */
    static public final Locale CANADA = new Locale("en","CA","");

    /** Useful constant for country.
     */
    static public final Locale CANADA_FRENCH = new Locale("fr","CA","");


Так что то, что 
Цитата(ALKS @  4.5.2006,  14:55 Найти цитируемый пост)
у меня они например все на немецком сыпяться.

вполне логично, а вот насчет
Цитата(ALKS @  4.5.2006,  14:55 Найти цитируемый пост)
то и на русском тоже должно палить и без всякого специального кода 

ты не прав - тут надо ручками...
  

Это сообщение отредактировал(а) ShamanTrirukiy - 6.5.2006, 13:32
PM MAIL   Вверх
ALKS
Дата 6.5.2006, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



не на немецком у меня ничего не работает наврал. немецкие сообщения сыпер АрpServer а не сама Java, да и то не все. Видно АрpServer чего-то перехватил и локализовал а чего-то нет.  
PM   Вверх
LSD
Дата 7.5.2006, 12:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

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



Цитата(ShamanTrirukiy @  6.5.2006,  14:30 Найти цитируемый пост)
Так вот, тот самый Стелтинг советует при локализации Exception-а использовать Locale. Смотрим исходники и наблюдаем там следующий перечень языков, поддерживаемых при локализации:

Это просто список наиболее часто употребляемых констант для локалей, а полный список можно получить так: Locale.getAvailableLocales().

По поводу ошибок, Java ошибки не локализует. За исключением некоторых специфичных случаев, типа FileNotFoundException, но там уже дается то сообщение которое выдала ОС и это заслуга не JVM. Некоторые драйвера JDBC локализуют свои сообщения об ошибках. Считается что Exception-ы предназначены для программиста, а не пользователя, а как их обработать и отобразить пользователю, это уже дело программиста.  


--------------------
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.
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

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

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


 




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


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

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