Java.util.Currency.getInstance бросает IllegalArgumentException
Я просто пытаюсь разобраться с java.util.Currency
, но для нескольких кодов валют его бросает меня java.lang.IllegalArgumentException
это мой простой код
java.util.Currency c = java.util.Currency.getInstance(code);
согласно java doc
public static Currency getInstance (String currencyCode)
Returns the Currency instance for the given currency code.
Parameters:
currencyCode - the ISO 4217 code of the currency
Returns:
the Currency instance for the given currency code
Throws:
NullPointerException - if currencyCode is null
IllegalArgumentException - if currencyCode is not a supported ISO 4217 code.
Я получаю это исключение для нескольких кодов, и некоторые из них
согласно ISO_4217, все вышеперечисленные коды являются официальными именами ISO 4217, я не уверен, почему я получаю это исключение в этом дело?
Нужно ли мне что-то делать или нужно передавать некоторую другую информацию в JVM для получения правильных значений?
любая помощь, чтобы очистить мою путаницу, действительно заметна или может указывать на валюту ISO 4217, которую java doc указывает, поскольку я могу видеть выше коды в списке ISO 4217, поэтому его возможный я смотрю на неправильные документы/ссылки.
Для обеспечения более глубокого понимания здесь показана трассировка стека
Exception in thread "main" java.lang.IllegalArgumentException
at java.util.Currency.getInstance(Unknown Source)
at java.util.Currency.getInstance(Unknown Source)
at CurrencyTest1.main(CurrencyTest1.java:10)
и версия Java
java version "1.6.0_21"
Java(TM) SE Runtime Environment (build 1.6.0_21-b07)
Java HotSpot(TM) 64-Bit Server VM (build 17.0-b17, mixed mode)
Ответы
Ответ 1
Это интересная проблема.
Оба COU и UYI не являются реальными валютами. COU - это старая венесуэльская валюта (не используется больше), а UYI - индексированная валюта, которая, вероятно, используется банками для определения обменных курсов.
В java 1.7.0_u7 TMT прекрасно работает. TMT был представлен в 2009 году, поэтому имеет смысл, что Java 6 не знает этого кода.
Ответ 2
Редакция:
Для меня это работает:
Currency curr = java.util.Currency.getInstance("UYU");
System.out.println("Currency code:" + curr.getCurrencyCode());
UYI
не соответствует стандарту ISO 4217, вот список: http://www.xe.com/iso4217.php
Ответ 3
Для Уругвая UYU
работает нормально вместо UYI
и COP
вместо COU
для Columbia TMT
тоже не работает для меня.