【问题标题】:Rethrow Exception in Android SQLite Database onCreate()在 Android SQLite 数据库 onCreate() 中重新抛出异常
【发布时间】:2012-07-17 14:57:44
【问题描述】:

嘿,这是我创建新数据库时当然会调用的 SQLiteDatabase 的 onCreate 方法。我想抓住任何问题并记录下来,然后重新抛出它以便在上面处理。但是编译器不允许我重新抛出异常,抱怨它没有被处理。这是在写着“throw e;”的那一行。

@Override
public void onCreate(SQLiteDatabase db) {//arg0?
    db.beginTransaction();
    try {
        Checklist.createTable(db);
        Item.createTable(db);
        db.setTransactionSuccessful();
    } catch (Exception e) {
        Log.e(KnowUrStuffApp.TAG,"KusDBHelper.onCreate: " + e.getLocalizedMessage());           
        db.endTransaction();
        throw e;//SYNTAX ERROR: Unhandled Exception Type Exception
    }
}

【问题讨论】:

  • 出于好奇,您为什么要这样做?
  • Raghav 现在仅用于调试目的。但在未来我想要一个用户界面组件来处理向用户提供用户友好的消息。

标签: java android database sqlite create-table


【解决方案1】:
public void onCreate(SQLiteDatabase db) throws Exception {//arg0?

编辑:谢谢,投掷*。

【讨论】:

  • 是的,它的投掷。这会导致语法错误“异常异常与 onCreate 中的 throws 子句不兼容”
  • 这不会编译。检查我的答案。
  • 我喜欢你的 Jekyll-Bootstrap 博客。
【解决方案2】:

改变

public void onCreate(SQLiteDatabase db) {

public void onCreate(SQLiteDatabase db) throws Exception{

【讨论】:

  • public void onCreate(SQLiteDatabase db) throws Exception {//arg0?
  • 描述资源路径位置类型异常异常与 SQLiteOpenHelper.onCreate(SQLiteDatabase) KusDBHelper.java /Know Ur Stuff/src/com/geeksonhugs/knowurstuff/data line 75 Java 问题中的 throws 子句不兼容
  • 我认为您还必须删除@Override
  • 我相信它必须被覆盖
【解决方案3】:

throws Exception 添加到您的方法中。

【讨论】:

  • 这修复了该语法错误,但会导致另一个“类型异常异常与 throws 子句不兼容”
【解决方案4】:

你的问题是,你抛出了一个 checked 异常。只有在出现此异常时才能这样做

  1. try/catch-block 直接捕获和处理
  2. 或者通过将throws SomeException 添加到您的method-signature 来“向上”抛出异常。

但是,在您的情况下,您将覆盖onCreate()-方法,该方法(在基类中)不会引发检查异常。因此,您不能覆盖该方法并将throws 添加到签名中,因为那将不再是覆盖。

你可以做的是,向上抛出一个RuntimeException,不需要添加到方法签名中:

Log.e(KnowUrStuffApp.TAG,"KusDBHelper.onCreate: " + e.getLocalizedMessage());           
db.endTransaction();
throw new RuntimeException(e); // Add the checked exception as the cause!

有关异常(抛出和捕获)的更多信息,请参阅我的博文:Catching practice

【讨论】:

  • 就是这样!多谢兄弟! :-) +1
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多