【发布时间】:2012-10-06 16:59:41
【问题描述】:
我只是在尝试使用java.util.Currency,但对于少数货币代码,它会抛出我java.lang.IllegalArgumentException
这是我的简单代码
java.util.Currency c = java.util.Currency.getInstance(code);
根据 java 文档
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.
我得到这个例外的代码很少,而且很少
- 优易
- 凑
- TMT
根据ISO_4217,以上所有代码都是官方 ISO 4217 货币名称,我不知道为什么在这种情况下我会收到此异常? 我需要做其他事情还是需要将一些其他信息传递给 JVM 以获得正确的值? 消除我的困惑的任何帮助都是非常明显的,或者可以将我指向 java doc 所指向的 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 版本
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)
【问题讨论】:
-
您能否添加堆栈跟踪并说明您正在运行哪个 JDK 版本?
-
@Augusto:我更新了我的帖子,看看。
-
我可以用 Java 1.7 重现您提到的货币代码的问题。
-
@roelandvanbeek:这很奇怪! ISO 4217 下似乎不支持这些货币代码。
-
只需对照
Currency.getAvailableCurrencies()检查您的货币。在我的盒子上 TMT 可用,其他的不可用。
标签: java