1

我在我的项目中使用 Postgresql + Neo4j。如果 neo4j 查询失败,我需要回滚 postgres 查询。所以,我需要在我的代码中捕获 Neo4jException。但是还做不到。感谢帮助。

    require_once('pgconnect.php');

    try{

        $conn->beginTransaction();
        //some pgsql code
        $conn->commit();
        require_once('neoconnect.php');
        $result = $client->run("a query");
        $conn = null;

    }
    catch(PDOException $e){
        require_once('pgrollback.php');
    }

这是我的工作代码。但正如你所看到的,我没有一个 catch 块来捕捉 neo4j 异常。所以我添加了这个,但没有运气。还尝试将 withNeo4jExceptionInterface 作为异常类(绝望的时候)。(顺便说一句,我使用错误的类型查询来获取异常)

   catch(Neo4jException $ex){
        //done smth
    }

也试图在没有运气的情况下做到这一点。

$client->run("a query") or throw new Neo4jException();
4

1 回答 1

2

我刚刚进行了测试,发现异常没有问题,您能否提供更多代码,neoconnect.php例如什么?

这是我的测试:

$client = ClientBuilder::create()
        ->addConnection('default', 'http://localhost:7474')
        ->build();

$query = 'INVALID QUERY';

try {
    $result = $client->run($query);
} catch (\GraphAware\Neo4j\Client\Exception\Neo4jException $e) {
    echo sprintf('Catched exception, message is "%s"', $e->getMessage());
}

-

ikwattro@graphaware ~/d/g/p/neo4j-php-client> php test.php
Catched exception, message is "Invalid input 'I': expected <init> (line 1, column 1 (offset: 0))
"INVALID QUERY"
 ^"⏎
于 2016-08-03T20:00:34.213 回答