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;
	}

這三個方法在我們進行查詢時,如果出現問題,它們會將問題反映出來。當試圖獲取一個對象時,卻出現了異常,那可以在獲取對象的過程中通過另一個(全局)對象將這個異常的信息保存下來,以供方法返回後使用。

本想說這與狀態模式有點關聯,但好像不大,附上狀態模式的定義:

允許對象在內部狀態改變時改變它的行爲,對象看起來好像修改了它的類

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