在Java Card中进行递归编程时捕获内存异常

时间:2015-09-07 12:26:39

标签: java exception recursion smartcard javacard

虽然Java Card不推荐使用递归编程风格,但我想对Fibonacci算法进行一些测试。我编写了一个函数,用于计算大整数的Fibonacci套件(由字节数组表示)。

我的代码如下:

<span class="pull-right">
        <span class="caret"></span>
    </span>

如果字节数组表示的整数小于或等于1,则public static byte[] fibonacci(byte[] n) { if (isLEThan1(n)) { return n; } else { return add(fibonacci(subtract(n, new byte[]{0x01})),fibonacci(subtract(n,new byte[]{0x02}))); } } 返回boolean isLEThan(byte[]),否则返回true

falsebyte[] add(byte[], byte[])对由字节数组表示的大整数实现加法和减法。它们返回一个包含操作结果的新字节数组。

我认为通过给上面描述的函数提供一个大数组,我会得到一个例外byte[] subtract(byte[], byte[]),因为递归调用会减去实例化的数组。

但我必须认为我没有抓住正确的例外,因为我将SystemException.NO_RESOURCE作为状态字。

以下是我考虑的例外情况列表:

6F00

那么,在这种情况下,是否有人对有关的例外情况有所了解?

1 个答案:

答案 0 :(得分:5)

它是SystemException。但是,ISO / IEC 7816-4不允许您只使用任何状态字。而是使用例如(short) (0x6700 | 0x0080 | e.getReason())作为ISOException的原因。