metaclass: (дзедline)
[personal profile] metaclass
А почему в java нету готовых методов, которые бы позволяли парсить числа, не кидая исключений?
Т.е. возвращали бы true+число, либо false, типа как int.TryParse в дотнете.

Date: 2013-03-21 09:43 am (UTC)
From: [identity profile] andrew kondratovich (from livejournal.com)
  public static int getInteger(String value, int def) {
    try {
      return Integer.parseInt(value);
    } catch (Exception e) {
      return def;
    }
  }
Edited Date: 2013-03-21 09:45 am (UTC)

Date: 2013-03-21 09:46 am (UTC)
From: [identity profile] artureg.livejournal.com
пизда пизда пизда

Date: 2013-03-21 09:48 am (UTC)
From: [identity profile] metaclass.livejournal.com
да,
(defn parseIntDef
"convert string to int"
[str & [default]]
(try (Integer/parseInt str)
(catch Exception _ default)))

Но наличие таких функций в моей библиотеке меня огорчает :)

Date: 2013-03-21 11:20 am (UTC)
From: [identity profile] andrew kondratovich (from livejournal.com)
Ну а как иначе жить

Date: 2013-03-21 01:45 pm (UTC)
From: [identity profile] andrew kondratovich (from livejournal.com)
кэмел кейс в кложуре - а как же православные дэши ?

Date: 2013-03-21 02:01 pm (UTC)
From: [identity profile] metaclass.livejournal.com
Я одновременно пишу на F#/C#/жабе/clojure/Delphi и С++, из-за чего меня периодически переклинивает и я путаю стили кода. И пока нет возможности из этого исключить лишние языки.

Date: 2013-03-21 02:49 pm (UTC)
From: [identity profile] zmila.livejournal.com
(type (read-string "1234"))
; java.lang.Long
(type (read-string "aaa1234"))
; clojure.lang.Symbol
(type (read-string "(print 21)"))
; clojure.lang.PersistentList

только хотел сказать, что всё красиво, но

(type (read-string "1234bbb"))
; NumberFormatException Invalid number: 1234bbb clojure.lang.LispReader.readNumber (LispReader.java:258)

Date: 2013-03-21 12:33 pm (UTC)
From: [identity profile] dnnx.livejournal.com
catch (Exception e)

Date: 2013-03-21 02:44 pm (UTC)
From: [identity profile] zmila.livejournal.com
NumberFormatException

за ловлю голого Exception нужно пальцы дверью зажимать. сначала на ногах, при рецидиве - на руках и вон из профессии :)

Date: 2013-03-21 03:11 pm (UTC)
From: [identity profile] andrew kondratovich (from livejournal.com)
оттуда может вылететь 2 исключения. Писать 2 кетча или один общий. Теоретики блин один лучше другого.

Date: 2013-03-21 03:52 pm (UTC)
From: [identity profile] sergiej.livejournal.com
Чож сразу не Throwable???
Эксепшн это дорогая штука для жаба машины. То что вы написали это, несмотря на корректную работу, обычная индусятина.

Date: 2013-03-22 06:58 am (UTC)
From: [identity profile] andrew kondratovich (from livejournal.com)
Выше уже писали - не смотря на то, что эксепшены для исключительный ситуаций, в данном случае подобное их использование в виде управляющих конструкций навязано отсутствием других вменяемых вариантов.

Date: 2013-03-23 05:39 pm (UTC)
From: [identity profile] sergiej.livejournal.com
Никак не оправдано. В данном случае надо проверить, правильный ли номер, а не парсить, поэтому надо использовать NumberFormat в месте возникновения сомнительного стринга-интежера.
Про сами эксепшны вопрос, скорее, академический. Вот пример, у вас пользователь вводит логин и пароль. Факт ввода неправильного пароля это эксепшн?
К вашему коду претензия другого плана. Что толку от вашего возвращения некого дефолта? Вам в месте вызова этой функции надо проставлять этот дефолт, обрабатывать потом результат, не пришёл ли дефолт. Не говоря о том, что в таком случае парсинг самого дефолта невозможен. Всё это в совокупности - индусятина. Лучше уж сразу в месте вызова ловить эксепшн и обрабатывать.

Profile

metaclass: (Default)
metaclass

April 2017

S M T W T F S
      1
2345678
9101112 131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 27th, 2025 01:28 am
Powered by Dreamwidth Studios