我只是尝试使用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货币,因为我可以在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 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)
答案 0 :(得分:6)
这是一个有趣的问题。
COU和UYI都不是真实货币。 COU是委内瑞拉的旧货币(不再使用),UYI是一种指数货币,可能被银行用来整理汇率。
在java 1.7.0_u7中,当前 TMT 正常工作。 TMT于2009年推出,因此Java 6不知道该代码是有意义的。
答案 1 :(得分:1)
对于乌拉圭UYU
工作正常而不是UYI
和COP
而不是COU
哥伦比亚TMT
也不适合我。
答案 2 :(得分:0)
EDITED: 对我来说这很有效:
Currency curr = java.util.Currency.getInstance("UYU");
System.out.println("Currency code:" + curr.getCurrencyCode());
UYI
不在ISO 4217标准中,这是一个列表:http://www.xe.com/iso4217.php