2011-12-31 128 views
2

在我的应用程序中,我使用了SQLiteOpenHelper类,它有insertOrThrow方法。我想知道这个方法会在抛出异常之前关闭我的连接吗?并且在方法的定义上写入“新插入的行的行ID,或者-1如果发生错误”Android抛出异常

当抛出异常时,它如何返回值?有些事情是错的。解释还是抛出?

这是我如何使用InsertOrThrow。 我想知道当我向我的方法声明throws Exception时,是否有必要使用try-catch(如果我没有任何特殊的事情可以像我的exp那样捕获)?

public long insert(ContentValues cv) throws Exception { 
    try 
    { 
     long rowId = getWritableDatabase().insertOrThrow(_tableName, null, cv); 
     return rowId; 
    } 
    catch (Exception ex) { 
     throw ex; 
    } 
    finally{ 
     Close(); 
    } 
} 
+0

发布你尝试过的实用东西。 – Lion 2011-12-31 19:59:42

回答

1

这取决于;如果this.Close()可以抛出异常,那么它仍然需要被声明为抛出或捕获。通常情况下,这是用小的实用方法来包装的。

这不是强制性使用catch,你可以简单地try/finally

关于返回值:由于异常而退出的方法没有返回值。

异常应该封装足够的信息之一:

  • 允许呼叫者做一些不同之处是有用的,例如,重试操作,或
  • 帮助开发人员理解问题,并导致他/她的决议。

我鼓励你遵循标准的Java命名约定,以避免您的代码混淆读者:非最终变量应该以小写字母开头。方法名称也应以小写字母开头。

另外,如果不需要消除您正在访问的属性的歧义,则无需在this前加上方法(或变量)。

+0

感谢您的回答。我在我的公司使用VB.NET,而我们的惯例就是这样。它需要时间来遵循Java标准。那么InsertOrThrow方法呢?它抛出异常还是返回-1?或者他们两个? – ahmet 2011-12-31 21:13:27

+0

@AhmetHüdaiAYDIN它会* *返回一个值,*或*抛出一个异常。 – 2011-12-31 21:22:57

+0

反对票是...? – 2017-08-03 12:06:17

0

当抛出一个异常如何有返回值?有些事情是错的。

是的,你说得对。该文件似乎是错误的。

insertOrThrow不返回-1,相反,如果查询失败,它将抛出SQLException。还有一种叫做insert的方法,如果查询失败,将返回-1,如果成功,则新创建rowID