当前位置: 首页 > 知识库问答 >
问题:

Android中的异常处理

仰经武
2023-03-14

我需要在我的应用程序中将异常显示为toast消息,但以下代码不起作用,我如何修改它?

public void onClick(View v) {
        try {
            if (btn66 == v) {
                ContentValues value = new ContentValues();
                value.put(DBhelper.Amount, txtBudget.getText().toString());
                value.put(DBhelper.Description, txr.getText().toString());

                if (txtBudget.length() == 0) {
                    txtBudget.requestFocus();
                    txtBudget.setError("Field Cannot Be Empty");
                } else {

                    db = helper.getWritableDatabase();
                    db.insert(DBhelper.TABLE2, null, value);
                    db.close();
                    clearfield();
                    Toast.makeText(this, "Budget add Successfully", Toast.LENGTH_LONG).show();
                    fetchData2();
                }
            }
        }
        catch (Exception sce)
        {
            Toast.makeText(this, "Error duplicate", Toast.LENGTH_LONG).show();
            System.out.println(sce.getMessage());

        }
    }

10-14 23:41:21.637 14498-14498/com.example.username.weddingplanningE/SQLiteDatabase︰错误插入name=dandroid.database.sqlite.SQLiteConstraintExc0019:列名称不是唯一的(代码19)在android.database.sqlite.SQLiteConnection.nativeExecteForLastInsertedRowId(本地方法)在android.database.sqlite.SQLiteConnection.executeForLastInsertedRowId(SQLiteConnection.java:968)在android.database.sqlite.SQLiteSession.executeForLastInsertedRowId(SQLiteSession.java:788)在android.database.sqlite.SQLiteStatement.execute插入(SQLiteStatement.java:86)在android.database.sqlite.SQLiteDatabase.insert与冲突(SQLiteDatabase.java:1575)在android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1445)在android. view的com.example.username.weddingplanning.addcategory.on点击(addclass. java: 67)。视图。在android. view的执行点击(视图。java: 4439)。查看$PerformClick. run(View. java: 18398)在android. os。Handler. handleCallback(Handler. java: 725)在android. os。在android. app. ActivityThread. main(ActivityThread. java: 5299)在java. lang.反射。方法。调用本地(本地方法)在java. lang.反射。方法。调用(方法。java: 511)在com. android. interal. os。ZygoteInit$MeodAndArgsCaller. run(ZygoteInit. java: 1102)在com. android. interal. os。ZygoteInit. main(ZygoteInit. java: 869)在dalvik. system。NativeStart. main(本地方法)

共有3个答案

韶弘壮
2023-03-14

最好检查插入语句的结果代码。插入语句总是返回新插入行的行ID,如果发生错误,则返回-1。

金子平
2023-03-14

你必须通过你的活动。这是Toast的第一个参数。

例子:

Toast.makeText(YourActivity.this, "Your Message", Toast.LENGTH_LONG).show(); 

洪飞驰
2023-03-14

您可以从所使用的构造函数的Toast文档中看到:

public static Toast makeText (Context context, CharSequence text, int duration)

Parameters
    context     The context to use. Usually your Application or Activity object.
    text        The text to show. Can be formatted text.
    duration    How long to display the message. Either LENGTH_SHORT or LENGTH_LONG

第一个参数是上下文

你正在传递这个编辑:它可能不是正确的上下文,从中可以构建一个Toast

您需要将活动应用程序上下文传递给它才能正常工作。

 类似资料:
  • 在我的应用程序里。我正试图使用Kotlin Coroutines发送网络请求。我分析了一些情况下的响应和抛出异常。下面是代码: 此拦截异常。 logcat中的此异常消息 06-03 17:18:01.012 237 96-24010/ru.mtsbank.dbosme e/androidruntime:致命异常:OkHttp调度程序流程:ru.mtsbank.dbosme,pid:23796 ja

  • Volley中的异常处理怎么样,它是在构建中提供异常处理机制还是我们需要单独处理?

  • 本文向大家介绍详解Android中处理崩溃异常,包括了详解Android中处理崩溃异常的使用技巧和注意事项,需要的朋友参考一下 大家都知道,现在安装Android系统的手机版本和设备千差万别,在模拟器上运行良好的程序安装到某款手机上说不定就出现崩溃的现象,开发者个人不可能购买所有设备逐个调试,所以在程序发布出去之后,如果出现了崩溃现象,开发者应该及时获取在该设备上导致崩溃的信息,这对于下一个版本的

  • 问题内容: 我有一个ScheduledThreadPoolExecutor,似乎正在吃异常。如果提交的Runnable引发异常,我希望我的执行者服务通知我。 例如,我希望下面的代码至少输出IndexArrayOutOfBoundsException的stackTrace 作为附带问题。有没有办法为ScheduledThreadPoolExecutor编写常规try catch块? ////////

  • 本文向大家介绍Java 中的异常处理?相关面试题,主要包含被问及Java 中的异常处理?时的应答技巧和注意事项,需要的朋友参考一下  Java异常类层次结构图 在 Java 中,所有的异常都有一个共同的祖先java.lang包中的 Throwable类。Throwable: 有两个重要的子类:Exception(异常) 和 Error(错误) ,二者都是 Java 异常处理的重要子类,各自都包含大

  • 我创建了简单的MailService来通过电子邮件发送内容。它工作但我不知道如何处理异常(我的想法是在HTML视图中打印一些信息或在404页重定向) 邮件服务: 在控制器中的用法: