Java Android SQLite数据库onCreate()中的Rethrow异常

Java Android SQLite数据库onCreate()中的Rethrow异常,java,android,database,sqlite,create-table,Java,Android,Database,Sqlite,Create Table,嘿,这是我对SQLiteDatabase的onCreate方法,创建新数据库时当然会调用该方法。我想捕捉任何问题并记录下来,然后重新浏览以处理上面的问题。然而,编译器不允许我重新抛出异常,抱怨它没有得到处理。这是写着“扔e;”的一行 编辑:谢谢,扔* 编辑:谢谢,更改* public void onCreate(SQLiteDatabase db) { 到 改变 到 将抛出异常添加到您的方法。将抛出异常添加到您的方法。您的问题是,您正在抛出一个已检查的异常。只有在排除此异常时才能执行此操作 由

嘿,这是我对SQLiteDatabase的onCreate方法,创建新数据库时当然会调用该方法。我想捕捉任何问题并记录下来,然后重新浏览以处理上面的问题。然而,编译器不允许我重新抛出异常,抱怨它没有得到处理。这是写着“扔e;”的一行

编辑:谢谢,扔*

编辑:谢谢,更改*

public void onCreate(SQLiteDatabase db) {

改变


抛出异常
添加到您的方法。

抛出异常
添加到您的方法。

您的问题是,您正在抛出一个已检查的异常。只有在排除此异常时才能执行此操作

  • try/catch
    -块直接捕获和处理
  • 或者通过将
    抛出某个异常
    添加到您的
  • 但是,在您的例子中,您正在重写
    onCreate()
    -方法,该方法(在基类中)不会引发选中的异常。因此,您不能重写该方法并向签名添加
    throws
    ,因为这将不再是重写

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

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

    有关异常(抛出和捕获)的更多信息,请参阅我的博客帖子:

    您的问题是,您正在抛出一个已检查的异常。只有在排除此异常时才能执行此操作

  • try/catch
    -块直接捕获和处理
  • 或者通过将
    抛出某个异常
    添加到您的
  • 但是,在您的例子中,您正在重写
    onCreate()
    -方法,该方法(在基类中)不会引发选中的异常。因此,您不能重写该方法并向签名添加
    throws
    ,因为这将不再是重写

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

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


    有关异常(抛出和捕获)的更多信息,请参阅我的博客帖子:

    是的,它是抛出。这会导致语法错误“Exception Exception与onCreate中的throws子句不兼容”,这将无法编译。检查我的答案。我喜欢你的Jekyll Bootstrap博客。是的。这会导致语法错误“Exception Exception与onCreate中的throws子句不兼容”,这将无法编译。检查我的答案。我喜欢你的Jekyll Bootstrap博客。出于好奇,你为什么要这样做?Raghav它现在只是为了调试目的。但是在将来,我需要一个用户界面组件来处理向用户提供用户友好的消息。出于好奇,你为什么要这样做?Raghav它现在只是为了调试目的。但是在将来,我需要一个用户界面组件来处理向用户提供用户友好的消息。public void onCreate(SQLiteDatabase db)抛出异常{//arg0?说明资源路径位置类型异常与SQLiteOpenHelper.onCreate(SQLiteDatabase)中的throws子句不兼容KusDBHelper.java/Know-Ur-Stuff/src/com/geeksonhugs/knowurstuff/data line 75 java问题您还必须删除
    @Override
    行,我想它必须被重写I beleivepublic void onCreate(SQLiteDatabase db)抛出异常{//arg0?说明资源路径位置类型异常与SQLiteOpenHelper.onCreate(SQLiteDatabase)中的throws子句不兼容KusDBHelper.java/Know Ur Stuff/src/com/geeksonhugs/knowurstuff/data line 75 java问题您还必须删除
    @Override
    行,我想它必须被重写,我认为这修复了语法错误,但导致另一个“类型异常异常与throws子句不兼容”这修复了该语法错误,但导致另一个“类型异常异常异常与throws子句不兼容”就是这样!谢谢兄弟!:-)+1谢谢兄弟!:-)+1
    public void onCreate(SQLiteDatabase db) throws Exception{
    
    Log.e(KnowUrStuffApp.TAG,"KusDBHelper.onCreate: " + e.getLocalizedMessage());           
    db.endTransaction();
    throw new RuntimeException(e); // Add the checked exception as the cause!