1

我在高度多线程的环境中创建图表,但遇到了一个奇怪的错误。在运行时,我有时会收到一个错误,即我尝试访问的属性不存在。

java.lang.IllegalStateException: The property does not exist as it has no key, value, or associated element

为了解决这个问题,我在发生错误时设置了一个断点,并发现了一些奇怪的行为。

当我运行时:

Vertex vertex = graph.traversal().V(123).next();
vertex.properties();

我看到了我期望的所有属性的列表,例如"PROP1""PROP2""PROP3"。但是,当我运行以下命令时:

vertex.property("PROP1").value();

我收到该属性不存在的错误。更奇怪的是,它vertex.property(xxx).value();适用于其他属性"PROP2""PROP3". 什么会导致这种奇怪的行为?

4

1 回答 1

2

作为一个好的做法,你应该总是在击球前检查next()

例如,

traversal=graph.traversal().V(123);
if (traversal.hasNext()) // avoid fast no property exception here.
    vertex=traversal.next() 

另一件事,vertex.property("PROP1")检索值可能有点奇怪。property()检索属性对象,这不是你想要的我假设,如果它没有找到它,它会抛出一个异常。相反,获得价值的更好方法是通过vertex.values("PROP1"). 如果属性不存在,这将返回 null。

在此处查看文档

于 2016-02-15T14:46:12.603 回答