如何在外部DLL中捕获异常?

时间:2015-08-15 12:11:34

标签: c# dll exception-handling neo4jclient

我想捕获当我尝试使用Neo4jClient.dll连接到我的neo4j数据库时发生的异常。如果数据库处于脱机状态,我会收到以下错误:"类型' System.AggregateException'发生在mscorlib.dll中但未在用户代码中处理。"我永远无法抓住我的抓地力。

这是我的代码:

class Neo4JConnector
{
    private static GraphClient client = null;

    public Neo4JConnector(IniConfigSource configSource)
    {
        if (client == null)
        {
            client = new GraphClient(new Uri(configSource.Configs["Configuration"].Get("Neo4jUrl")));

            try
            {
                client.Connect();
            }
            catch (Exception ex) 
            {
                Console.WriteLine("Cannot connect"); // never reached :(
            }

然后我尝试使用" extern"使用此代码的修饰符:

class Neo4JConnector
{
    private static GraphClient client = null;

    [DllImport("Neo4jClient.dll", EntryPoint="Connect")]
    static extern void Connect();

    public Neo4JConnector(IniConfigSource configSource)
    {
        if (client == null)
        {
            client = new GraphClient(new Uri(configSource.Configs["Configuration"].Get("Neo4jUrl")));

            try
            {
                Connect();
            }
            catch (Exception ex) 
            {
                Console.WriteLine("Cannot connect");
            }
        }

但我得到的是一个异常,说" [System.EntryPointNotFoundException] = {"无法找到一个名为' Connect'在DLL' Neo4jClient.dll'。":""}"

这是签名在Neo4jClient.dll

中的样子
public virtual void Connect();

我的代码出了什么问题?是否有更好的方法来捕获外部异常?请帮忙:(

1 个答案:

答案 0 :(得分:0)

根据GitHub repo"Neo4jClient.dll"是一个.NET程序集。您只需从项目中添加对它的引用并使用方法。

以下是一个例子:

using Neo4jClient;
...
var client = new GraphClient(new Uri("http://localhost:7474/db/data"));
client.Connect();