2013-05-27 6 views
0

나는 트랜잭션 (나는 neo4j 1.8.2를 사용하고 있습니다)을 알아 내려고하지만 실제로 어떻게 오류를 처리하는지 이해할 수 없습니다. 예를 들어Neo4j 트랜잭션 오류 처리

내가 노드 만드는거야 :

public Node createNode() { 
    Transaction tx = getGraphDb().beginTx(); 
    try { 
     Node node = graphDb.createNode(); 
     tx.success(); 
     return node; 
    } finally { 
     tx.finish(); 
    } 
} 

노드가 생성되지 않으면 어떻게됩니까을 어떻게 구할 수 있습니까? 노드가 null인지 확인해야합니까?

답변

2

다음 코드 스 니펫을 사용할 수 있습니다. catch 절의 예외는 무엇이 잘못되었는지 알려줍니다. tx.failure()가 호출 될 때

Transaction tx = graphDb.beginTx();  
Node n = null; 
try { 
    n = graphDb.createNode(); 
    tx.success(); 
} catch (Exception e) { 
    tx.failure(); 
} finally { 
    tx.finish(); 
} 

거래

tx.finish()에 롤백됩니다.

주의 사항 : org.neo4j.graphdb.Transaction.finish()가 시도 -과 - 자원 문에 찬성 사용되지는 참조 : http://javadox.com/org.neo4j/neo4j-kernel/2.0.3/deprecated-list.html.()

try (Transaction tx = graphDatabaseService.beginTx()) 
{ 
      //work here 
      tx.success(); 
} 
+0

아무 이유없이이 메서드는 아무 예외도 throw하지 않기 때문에 아무 것도 잡을 수 없다고 생각했습니다. 감사합니다. =) – MightySeal

1

tx.failure 정말이 경우에 필요하지 않습니다 :

지금 적절한 방법이 될 것입니다. tx.success()가 없으면 트랜잭션도 롤백됩니다. 따라서 예외 관리 트랜잭션 관리라고 할 수 있습니다.

관련 문제