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

如何为异常消息干杯

朱起运
2023-03-14

我正在创建一个android应用程序,我试图在sqlite数据库中插入值,但当我尝试插入错误的值时,它会显示在终端android.database.sqlite中。SQLiteConstraintException:CHECK constraint失败:但我想toast一条消息。我使用了try-catch块,但它不起作用。

        registerbtn.setOnClickListener(new View.OnClickListener() {
            @RequiresApi(api = Build.VERSION_CODES.O)
            @Override
            public void onClick(View v)  {

                 if (isAllFieldsChecked = CheckAllFields()) {
            try {
                  dbHandler.insertValue(name.getText().toString(),
                       Age.getText().toString(), gender1.trim(),
                       email.getText().toString(), username.getText().toString(),
                       password.getText().toString(), contactno.getText().toString(),
                       Address.getText().toString(), city.getText().toString(),
                       encodedImage, item, uid.getText().toString());
                         Toast.makeText(getApplicationContext(), "Registration successful.", Toast.LENGTH_LONG).show();
                          textToSpeech.speak("Registration successful.",TextToSpeech.QUEUE_FLUSH,null);
                           Intent i = new Intent(RegisterActivity.this, MainActivity.class);
                           i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                           startActivity(i);
}
                       
                    catch (SQLiteConstraintException e) {
                                 final TextView textView=findViewById(R.id.bloodgroup6);
                                final ScrollView sc = findViewById(R.id.scroll);
                                    sc.post(new Runnable() {
                                        @Override
                                        public void run() {
                                            sc.scrollTo(0,city.getTop());
                                        }
                                    });

                                 textToSpeech.speak("please select blood group",TextToSpeech.QUEUE_FLUSH,null);
                           Toast.makeText(getApplicationContext(), "please select blood group", Toast.LENGTH_SHORT).show();
                     }

                 }

            }
        });

此异常正在进入终端,但我想在try catch块中捕捉该异常:-

E/SQLiteDatabase: Error inserting Uid=334 password=4567 img=null bloodgrp=select blood Email=ffg gender=male Address=gg Username=rushikesh city=ouh age=55 Name=ggg contactNo=6699588855
    android.database.sqlite.SQLiteConstraintException: CHECK constraint failed: register (code 275)
        at android.database.sqlite.SQLiteConnection.nativeExecuteForLastInsertedRowId(Native Method)
        at android.database.sqlite.SQLiteConnection.executeForLastInsertedRowId(SQLiteConnection.java:783)
        at android.database.sqlite.SQLiteSession.executeForLastInsertedRowId(SQLiteSession.java:788)
        at android.database.sqlite.SQLiteStatement.executeInsert(SQLiteStatement.java:86)
        at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1560)
        at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1429)
        at com.example.software2.bloodbankmanagement.DBHandler.insertValue(DBHandler.java:107)
        at com.example.software2.bloodbankmanagement.RegisterActivity$19.onClick(RegisterActivity.java:384)

共有1个答案

段干恺
2023-03-14

如果要在toast上显示异常消息,请替换:

Toast.makeText(getApplicationContext(), "please select blood group", Toast.LENGTH_SHORT).show();

使用:

Toast.makeText(getApplicationContext(), e.getMessage() , Toast.LENGTH_SHORT).show();
 类似资料:
  • 在使用JAXB对XSD文件进行XML验证期间,如果XML文件无效,我会得到。我通过调用。结果字符串是德语。 我使用的是JAXB2.2。在德国系统上使用Java8。 是什么决定了JAXB异常消息的语言,以及如何将其更改为英语? 以下是代码: 这是事件处理程序: 下面是事件处理程序输出的示例:

  • 在使用gradle执行特定测试套件的代码时,我得到以下错误。不明白原因。感谢任何帮助。 org.gradle.internal.remote.internal.MessageIOException:无法写入“/127.0.0.1:53644”.在org.gradle.internal.remote.internal.inet.socketconnection.flush(socketconnect

  • 前言 在封装创建request的时候会调用handleProduceResponse(),这个里面会调用 有异常并且可以重试,执行第一个分支,会调用 有异常但是不可以重试,执行第二个分支,会调用

  • 问题内容: 从Python标准库的组件中获取异常消息的最佳方法是什么? 我注意到在某些情况下,您可以通过如下字段获取它: 但在某些情况下(例如在套接字错误的情况下),您必须执行以下操作: 我想知道是否有标准方法可以涵盖大多数情况? 问题答案: 如果查看内置错误的文档,则会看到大多数类将其第一个参数分配为属性。并非所有人都这样做。 值得注意的是,(与子类和)具有的第一自变量,第二的。没有…大致类似于

  • 当出现错误时,我的java代码中会抛出异常。然后,我使用jdb运行代码,以便在出现异常时,可以看到代码的状态并进行调试。对于我抛出的所有异常,我放入了一个有用的字符串消息。然而,当jdb捕捉到异常时,它不会同时打印这个字符串。如何打印此字符串? 我已经在谷歌上搜索并阅读了文档,但我不知道怎么做。 如果我有测试课程: 并通过jdb运行它:

  • 我在输出在文件中创建的日期时遇到问题。 我一直在遵循一个关于如何创建真正基本的CMS平台的教程,帮助我了解和的一些基础知识,在我试图输出页面创建日期之前,一切都进展顺利。 这就是我得到的错误 现在,当我删除我的中的第22行时,它输出数据库中的完整日期,即,但我试图格式化它以显示像. 这是我的文件中的代码 然后在我的在我显示这个的地方,我有这个代码来格式化日期。 现在从我的中删除这个不会做任何事情,