我只是用
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.
我得到这个例外的几个代码,很少是
> UYI
> COU
> TMT
根据ISO_4217,所有上述代码是官方的ISO 4217货币名称,我不知道为什么我在这种情况下得到这个例外?
我需要做别的事情,还是需要向JVM传递一些其他信息来获取正确的值?
任何帮助清除我的混乱是非常明显的,或者可以指向我的ISO文档指向的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)
解决方法
这是一个有趣的问题.
COU和UYI都不是真正的货币. COU是旧的委内瑞拉货币(不再使用),UYI是指数货币,可能被银行用来整理汇率.
在java 1.7.0_u7中,TMT工作正常. TMT于2009年推出,所以Java 6不知道代码是有道理的.