我在高度多线程的环境中创建图形,我遇到了一个奇怪的错误。在运行时,我有时会收到一个错误,即我尝试访问的属性不存在。
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"
。什么可以导致这种奇怪的行为?
答案 0 :(得分: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。
检查文件here