如何在Apache Jena中处理写入错误?

时间:2017-02-03 08:14:00

标签: java error-handling kotlin jena apache-jena

想象一下,我有以下代码将记录插入Apache Jena数据库(TBD):

private fun createPersonLogic(ds: Dataset, email: String, nick: String) {
    ds.begin(ReadWrite.WRITE)
    val model = ds.defaultModel

    val uuid = UUID.randomUUID()
    val uri = "http://mycompany.com/data/p-${uuid}"
    val person = model.createResource(uri)
    person.addProperty(VCARD.EMAIL, email)
    person.addProperty(VCARD.N,
            model.createResource()
                    .addProperty(VCARD.NICKNAME, nick))
    ds.commit()
    ds.end()
}

在执行model.createResourceds.commit期间处理错误的正确方法是什么 - 如下面的代码片段或其他方式?

private fun createPersonLogic(ds: Dataset, email: String, nick: String) {
    try {
        ds.begin(ReadWrite.WRITE)
        val model = ds.defaultModel

        val uuid = UUID.randomUUID()
        val uri = "http://mycompany.com/data/p-${uuid}"
        val person = model.createResource(uri)
        person.addProperty(VCARD.EMAIL, email)
        person.addProperty(VCARD.N,
                model.createResource()
                        .addProperty(VCARD.NICKNAME, nick))
        ds.commit() 
    }
    catch (throwable:Throwable) {
        // react to the error
    }
    finally {
        ds.end()
    }
}

1 个答案:

答案 0 :(得分:0)

我们怎么可能知道你的应用程序对这种失败的正确答案是什么?!

说真的:这是您的项目,您的应用程序,您的要求。你必须清楚这类问题意味着什么给你。

尽管如此,"泛型"是:

  1. 向系统用户提供反馈 - 显然是一些非常核心的操作失败。你不能继续这个行动;你可能甚至需要一些回滚。
  2. 有关于失败情况的模式(如circuit breaker)可以为这类问题提供指导。换句话说:当您的数据库拒绝写入数据时,重要可能会被破坏。你可能要处理这个问题;超出了在这种情况下失败的那一项操作的范围。