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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> проблемы с Integer, проблемы с Integer 
:(
    Опции темы
Гость_pgood
Дата 3.11.2005, 16:58 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Может ли быть такое или это что-то у меня глючит?:


String s = "1"; // к примеру
Integer i = new Integer(s);
try{
i.intVale();
} catch(NullPointerException e){
System.out.println("i="+i);
}


в результате выбрасывается исключение и выводится следующий результат:

i=1
  Вверх
batigoal
Дата 3.11.2005, 17:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

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



Да вроде не должно быть никаких исключений...


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
val
Дата 3.11.2005, 17:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Program developer
**


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

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



Вот такой код:
Код

    public static void main(String[] args) {
        String s = "1"; // к примеру
        Integer i = new Integer(s);
        try{
            i.intValue();
            System.out.println("I = " + i);
        } catch(NullPointerException e){
            System.out.println("i = " + i);
        }

    }


выдаёт "I = 1", так вы не совсем правы, в исключение мы не заходим...


--------------------
Терпимость - величайшее благо человечества...
Ярчайший признак интеллекта – постоянно хорошее настроение…
PM MAIL ICQ   Вверх
pgood
Дата 3.11.2005, 17:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



на самом деле строку с цифрой я получаю из формы на JSP страничке через javax.servlet.http.HttpServletRequest request при чем этот request MULTIPART/FORM-DATA, но сути это не меняет, при

try{ Integer i = new Integer(s); }
catch(NumberFormatException e){}

исключение не выбрасывается

Добавлено @ 17:27
Цитата(val @ 3.11.2005, 17:21)
Вот такой код:
Код

    public static void main(String[] args) {
        String s = "1"; // к примеру
        Integer i = new Integer(s);
        try{
            i.intValue();
            System.out.println("I = " + i);
        } catch(NullPointerException e){
            System.out.println("i = " + i);
        }

    }


выдаёт "I = 1", так вы не совсем правы, в исключение мы не заходим...

если не ловить исключение, то его ловит AppServer. так что исключение точно выбрасывается
PM MAIL   Вверх
pgood
Дата 3.11.2005, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



ну....., у кого-нть мысли есть?
а то я уже всю голову сломал smile
PM MAIL   Вверх
allex
Дата 3.11.2005, 18:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



pgood
Не в ту сторону копаешь. Опять же, неплохо бы StackTrace у exception посмотреть.
PM MAIL   Вверх
LSD
Дата 3.11.2005, 18:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


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

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



pgood такого не может быть в принципе, если конструктор не отработает нормально и будет выброшено исключение то кусок кода
Код
try
{
  i.intVale();
}
catch(NullPointerException e)
{
  System.out.println("i="+i);
}

не будет выполнен. Если же конструктор отработает без ошибок, то переменная i получит не null значение.
Метод i.intVale() тоже не может выкидывать NullPointerException, достаточно посмотреть его код:
Код
public int intValue()
{
  return value;
}


Так что ты действительно не там ищешь ошибку, смотри StackTrace ошибка у тебя в другом месте.


--------------------
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   Вверх
hatsumeika
Дата 3.11.2005, 18:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



могу предположить, что s = null.

но в этом случае происходит вот что:

java.lang.NumberFormatException: null

at java.lang.Integer.parseInt(Integer.java:415)

at java.lang.Integer.<init>(Integer.java:620)

at image.ImageRW.m(ImageRW.java:22)

at image.ImageRW.main(ImageRW.java:11)

PM MAIL   Вверх
corewithin
Дата 3.11.2005, 19:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



ого предложолил...
NumberFormat и NullPointer exceptions явно не сродни друг другу...

2pgood: даешь stack trace и code sample...

не боись ) тырить идеи никто не будет )
PM MAIL   Вверх
Guest
Дата 4.11.2005, 12:02 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











весь код сложно дать, там много классов завязано, дам только этот класс
Код

package pgood.wt;
public class Product{
    public static final String FORM_FIELD_NAME_PRODUCT_ID = "productId";
    public static final String FORM_FIELD_NAME_CATEGORY_ID = "categoryId";
    public static final String FORM_FIELD_NAME_TRADER_ID = "traderId";
    public static final String FORM_FIELD_NAME_NAME = "name";
    public static final String FORM_FIELD_NAME_DESCRIPTION = "description";
    public static final String FORM_FIELD_NAME_PRICE = "price";
    public static final String FORM_FIELD_NAME_PICTURE = "image";
    public static final int COLUMN_NUM_PRODUCT_ID = 1;
    public static final int COLUMN_NUM_CATEGORY_ID = 2;
    public static final int COLUMN_NUM_TRADER_ID = 3;
    public static final int COLUMN_NUM_NAME = 4;
    public static final int COLUMN_NUM_DESCRIPTION = 5;
    public static final int COLUMN_NUM_PRICE = 6;
    public static final int COLUMN_NUM_PICTURE = 7;
    public static final int NUM_CONDITION = 8;
    private Integer productId;
    private Integer categoryId;
    private Integer traderId;
    private String name;
    private String description;
    private Double price;
    private byte[] picture;
    
    public Product(){ }
    public Product(javax.servlet.http.HttpServletRequest request){
        this();
        if(org.apache.commons.fileupload.FileUpload.isMultipartContent(request)){
            org.apache.commons.fileupload.DiskFileUpload upload = new org.apache.commons.fileupload.DiskFileUpload();
            try{ java.util.List items = upload.parseRequest(request);
                java.util.Iterator iter = items.iterator();
                while (iter.hasNext()){
                    org.apache.commons.fileupload.FileItem item = (org.apache.commons.fileupload.FileItem) iter.next();
                    if(0==item.getFieldName().compareTo(FORM_FIELD_NAME_PRODUCT_ID)){
                        try{ setProductId(new Integer(item.getString())); }
                        catch(NumberFormatException nfe){ System.out.println("--> From pgood.wt.Product.constructor() in setProductId() NumberFormatException:\n\t -x "+nfe.getMessage()); }
                    } else if(0==item.getFieldName().compareTo(FORM_FIELD_NAME_CATEGORY_ID)){                    
                        try{ setCategoryId(new Integer(item.getString())); }
                        catch(NumberFormatException nfe){ System.out.println("--> From pgood.wt.Product.constructor() in setCategoryId() NumberFormatException:\n\t -x "+nfe.getMessage()); }
                    } else if(0==item.getFieldName().compareTo(FORM_FIELD_NAME_TRADER_ID)){
                        try{ setTraderId(new Integer(item.getString())); }
                        catch(NumberFormatException nfe){ System.out.println("--> From pgood.wt.Product.constructor() in setTraderId() NumberFormatException:\n\t -x "+nfe.getMessage()); }
                    } else if(0==item.getFieldName().compareTo(FORM_FIELD_NAME_NAME)){
                        setName(item.getString());
                    } else if(0==item.getFieldName().compareTo(FORM_FIELD_NAME_DESCRIPTION)){
                        setDescription(item.getString());
                    } else if(0==item.getFieldName().compareTo(FORM_FIELD_NAME_PRICE)){
                        try{ setPrice(new Double(item.getString())); }
                        catch(NumberFormatException nfe){ System.out.println("--> From pgood.wt.Product.constructor() in setPrice() NumberFormatException:\n\t -x "+nfe.getMessage()); }
                    } else if(0==item.getFieldName().compareTo(FORM_FIELD_NAME_PICTURE)){
                        if (!item.isFormField()){
                            picture = item.get();
                        }
                    }
                }
            } catch(org.apache.commons.fileupload.FileUploadException fue){ System.out.println("--> From pgood.wt.Product.constructor() FileUploadException:\n\t -x "+fue.getMessage()); }
        } else{ System.out.println("--> From pgood.wt.Product.constructor():\n\t -x No multipart request"); }
    }
...
    public void setProductId(Integer PRODUCTID){ productId = PRODUCTID; }
    public void setCategoryId(Integer CATEGORYID){ categoryId = CATEGORYID; }
    public void setTraderId(Integer TRADERID){ traderId = TRADERID; }
    public void setName(String NAME){ name = NAME; }
    public void setDescription(String DESCRIPTION){ description = DESCRIPTION; }
    public void setPrice(Double PRICE){ price = PRICE; }
    public void setPicture(byte[] PICTURE){ picture = PICTURE; }
    public Integer getProductId(){ return productId; }
    public Integer getCategoryId(){ return categoryId; }
    public Integer getTraderId(){ return traderId; }
    public String getName(){ return name; }
    public String getDescription(){ return description; }
    public Double getPrice(){ return price; }
    public byte[] getPicture(){ return picture; }
...
    public void fillInsertPrepStatment(java.sql.PreparedStatement stmt){
        try{
            try{ stmt.setInt(COLUMN_NUM_PRODUCT_ID,getProductId().intValue()); }
            catch(NullPointerException npe){
                stmt.setNull(COLUMN_NUM_PRODUCT_ID,java.sql.Types.INTEGER);
                System.out.println("--> From pgood.wt.Product.fillInsertPrepStatment() NullPointerException:\n\t-x ProductId="+getProductId());
            }
            try{ stmt.setInt(COLUMN_NUM_CATEGORY_ID,getProductId().intValue()); }
            catch(NullPointerException npe){
                stmt.setNull(COLUMN_NUM_CATEGORY_ID,java.sql.Types.INTEGER);
                System.out.println("--> From pgood.wt.Product.fillInsertPrepStatment() NullPointerException:\n\t-x CategoryId="+getCategoryId());
            }
            try{ stmt.setInt(COLUMN_NUM_TRADER_ID,getProductId().intValue()); }
            catch(NullPointerException npe){
                stmt.setNull(COLUMN_NUM_TRADER_ID,java.sql.Types.INTEGER);
                System.out.println("--> From pgood.wt.Product.fillInsertPrepStatment() NullPointerException:\n\t-x TraderId="+getTraderId());
            }
            stmt.setString(COLUMN_NUM_NAME,getName());
            stmt.setString(COLUMN_NUM_DESCRIPTION,getDescription());
            try{ stmt.setDouble(COLUMN_NUM_PRICE,getPrice().doubleValue()); }
            catch(NullPointerException npe){
                stmt.setNull(COLUMN_NUM_PRICE,java.sql.Types.DOUBLE);
                System.out.println("--> From pgood.wt.Product.fillInsertPrepStatment() NullPointerException:\n\t-x Price="+getPrice());
            }
            try{
                javax.sql.rowset.serial.SerialBlob sbl = new javax.sql.rowset.serial.SerialBlob(getPicture());
                stmt.setBinaryStream(COLUMN_NUM_PICTURE,sbl.getBinaryStream(),(int)sbl.length());
            } catch(Exception npe){ stmt.setNull(COLUMN_NUM_PICTURE,java.sql.Types.BLOB); }
        }catch(java.sql.SQLException e){ System.out.println("--> From pgood.wt.Product.fillInsertPrepStatment() SQLException:\n\t-x "+e.getMessage()); }
    }
...
}


исключение выбрасывается на 78,83,88, но на 78 там значение действительно null, а на 83, 88, на печать выводится значение заданное в строке при конструировании. Значения задаются в конструкторе класса, строки 36,39,42
  Вверх
Guest
Дата 4.11.2005, 12:13 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











LSD я понимаю, что такого в принципе не может быть, поэтому к вам и обратился, может я где-то парюсь
  Вверх
LSD
Дата 4.11.2005, 12:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


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

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



Так посмотри на код у тебя в 78 строке stmt.setInt(COLUMN_NUM_PRODUCT_ID,getProductId().intValue());, в 83 stmt.setInt(COLUMN_NUM_CATEGORY_ID,getProductId().intValue()); и в 88 stmt.setInt(COLUMN_NUM_TRADER_ID,getProductId().intValue());. Ты везде запрашиваешь один и тот же ProductId который действительно null, а на печать в 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.
PM MAIL WWW   Вверх
pgood
Дата 4.11.2005, 12:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



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

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

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


 




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


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

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