Java中的NSNotFound等价物

时间:2011-09-16 13:37:54

标签: java android

我需要知道是否有办法说在Java Android中找不到int类型。 我正在编写一个Android应用程序,它实际上是首先为Iphone编写的,并且有一点问题。在某些时候,我必须检查是否找不到返回方法的int类型,并且是否真的进行了一些计算。问题是,当我在Java中使用if(Id==0)时,即使Id为0,它也会引发异常。

这是我的方法:

    private static int localUserIdByServerUserId(int serverUserId, String serverName){

    dbHelper = new DataBaseHelper(context, "stampii_sys_tpl.sqlite", null, 1);
    dbHelper.getDatabase();

    String query = "SELECT id FROM users WHERE objectId = "+serverUserId+" AND serverName = '"+serverName+"' LIMIT 1";
    ArrayList<String> result = new ArrayList<String>();
    cursor = dbHelper.executeSQLQuery(query);
    cursor.moveToFirst();
    while(!cursor.isAfterLast()) {
        result.add(cursor.getString(cursor.getColumnIndex("id")));
         cursor.moveToNext();
    }

    Log.i("result ","Result : "+result.toString());
    Log.i("CURSOR ","Cursor Position : "+cursor.getPosition());
    int uuid = Integer.parseInt(result.get(cursor.getColumnIndex("objectId")+1));
    Log.w("localUSerByIdServerUserId","LocalUserByIdServerUserId result : "+uuid);
    cursor.close();
    return uuid;

以下是我如何使用它:

int uuId = rpc.lUserIdByServerUserId(userId,newServerName);
        Log.w("uuId","uuId : "+uuId);
        if(uuId==0){
            // do some calculations
        }

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

lUserIdByServerUserId()可能会在找不到用户时抛出异常。

e.g。

try {
    int uuId = rpc.lUserIdByServerUserId(userId,newServerName);
    Log.w("uuId","uuId : "+uuId);
}
catch (NotFoundException nfe) {
    // do some calculations
}

您需要修改lUserIdByServerUserId()以抛出异常。如果Java库中尚不存在合适的异常,您可能还需要定义自己的NotFoundException类。

编辑: 或者,从@ mthpvg的回答开始,您可以更改lUserIdByServerUserId()以返回Integer类型,如果找不到并进行测试,则可以将其设置为null

e.g。

Integer uuId = rpc.lUserIdByServerUserId(userId,newServerName);
if (uuId == null) {
    // Do some calculations
}