Java 卡中小程序的坚固性

Sturdiness of an applet in Java Card

我在Java Card 中开发了一个小程序,它运行良好。 现在我正在研究这个小程序的坚固性,更准确地说,如果在小程序执行期间拔下卡会发生什么。

我想知道是否有处理此类事情的异常?

我正在搜索类似 :

的内容
try {
...
}
// If the card is disconnected while the applet execution
catch (Exception e) {
...
}

提前谢谢你。

由于智能卡里面没有电池,所以你不能有这样的try ... catch ...。或者,您可以利用 Transactions。事务 API 只是为了您的目标而提供的。 beginTransation()commitTransation() 方法之间的操作仅在 commitTransation() 成功完成时适用。如果在 commitTransation() 之前发生任何 exeption/card 撕裂或卡片重置,所有内容 returns 都会恢复到其原始状态(即恢复到 beginTransaction() 之前的状态)

是这样的:

    .
    .
    JCSystem.beginTransaction();
    //put your critical code here.
    JCSystem.commitTransaction();
    .
    .

您还可以使用JCSystem.commitTransaction();在特定情况下终止交易,如下所示:

    .
    .
    JCSystem.beginTransaction();

    //put your critical code here.
    if (condition) {
    JCSystem.commitTransaction();
    }

    JCSystem.commitTransaction();
    .
    .

注意:

  1. 交易在卡中的缓冲区有限。所以你不能把整个程序放在一个事务中。但是对于典型的关键方法,它有足够的缓冲区大小。
  2. 您不能使用嵌套交易。