sphinx里 java接口中对错误信息封装的一点记录

SphinxResult result = sphinx.Query(String queryString, String index, String comment);

下面是实现:
    /** Connect to searchd server and run current search query. */
    public SphinxResult Query ( String query, String index, String comment ) throws SphinxException
    {
        myAssert ( _reqs==null || _reqs.size()==0, "AddQuery() and Query() can not be combined; use RunQueries() instead" );

        AddQuery ( query, index, comment );
        SphinxResult[] results = RunQueries();
        _reqs = new ArrayList(); /* just in case it failed too early */
        if ( results==null || results.length<1 )
            return null; /* probably network error; error message should be already filled */

        SphinxResult res = results[0];
        _warning = res.warning;
        _error = res.error;//这里在修改SphinxClient对象里的_error属性
        if ( res==null || res.getStatus()==SEARCHD_ERROR )
            return null;
        return res;
    }



SphinxResult是使用sphinx对象进行查询后得到的结果对象,当这个结果对象不为null时说明查询一切正常,要是为null时我可以从sphinx对象中得到错误的原因:

sphinx.getLastError();
在SphinxClient这个接口中有如下的代码:

	/** Get last error message, if any. */
	public String GetLastError()
	{
		return _error;
	}

	/** Get last warning message, if any. */
	public String GetLastWarning()
	{
		return _warning;
	}

	/** Get last error flag (to tell network connection errors from searchd errors or broken responses). */
	public boolean IsConnectError()
	{
		return _connerror;
	}

这三个方法在我们进行查询时,如果出现问题,它们会将问题反映出来。当试图获取一个对象时,却出现了异常,那可以在获取对象的过程中通过另一个(全局)对象将这个异常的信息保存下来,以供方法返回后使用。

本想说这与状态模式有点关联,但好像不大,附上状态模式的定义:

允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章