的Android应用程序崩溃意外地在执行catch块

问题描述:

我在Android的新的,我没有得到为什么它正在发生。的Android应用程序崩溃意外地在执行catch块

在我的数据库,我使用rollno作为主键。

此代码的工作完美,将数据插入到数据库中,但是当我尝试插入与卷数的数据已经存在于它应该给消息数据库“数据已经存在”,但意外崩溃。

if (v.getId()==R.id.b1) { 
    int rollno,marks; 
    String name,m1,rno; 
    rno=t1.getText().toString(); 
    name=t2.getText().toString(); 
    m1=t3.getText().toString(); 
    rollno=Integer.parseInt(rno); 
    marks=Integer.parseInt(m1); 

    try { 
     db.execSQL("insert into stud values('" + rollno + "','" + name + "','" + marks + "');"); 
     Toast.makeText(getApplicationContext(), "Data saved", Toast.LENGTH_LONG).show(); 
    } catch(Exception e) { 
     Toast.makeText(getApplicationContext(), "Data already present", Toast.LENGTH_LONG).show(); 
    } 
} 

logcat的

D/SensorManager﹕ unregisterListener:: Trklfufi 9 [email protected],)+*cf+(
D/Sensors﹕ Remain listener = Sending .. normal delay 200ms 
I/Sensors﹕ sendDelay --- 200000000 
D/SensorManager﹕ JNI - sendDelay 
I/SensorManager﹕ Set normal delay = true 
D/SensorManager﹕ registerListener :: handle = 4 name= BMA222 3-axis Accelerometer delay= 200000 Trklfufi 9 [email protected],)+*fa88 
W/IInputConnectionWrapper﹕ getSelectedText on inactive InputConnection 
W/IInputConnectionWrapper﹕ setComposingText on inactive InputConnection 
D/SensorManager﹕ unregisterListener:: Trklfufi 9 [email protected],)+*fa88 
D/Sensors﹕ Remain listener = Sending .. normal delay 200ms 
I/Sensors﹕ sendDelay --- 200000000 
D/SensorManager﹕ JNI - sendDelay 
I/SensorManager﹕ Set normal delay = true 
D/SensorManager﹕ registerListener :: handle = 4 name= BMA222 3-axis Accelerometer delay= 200000 Trklfufi 9 [email protected],)+)(+/(
W/IInputConnectionWrapper﹕ getSelectedText on inactive InputConnection 
W/IInputConnectionWrapper﹕ setComposingText on inactive InputConnection 
D/SensorManager﹕ unregisterListener:: Trklfufi 9 [email protected],)+)(+/(
D/Sensors﹕ Remain listener = Sending .. normal delay 200ms 
I/Sensors﹕ sendDelay --- 200000000 
D/SensorManager﹕ JNI - sendDelay 
I/SensorManager﹕ Set normal delay = true 
D/SensorManager﹕ registerListener :: handle = 4 name= BMA222 3-axis Accelerometer delay= 200000 Trklfufi 9 [email protected],)+*cf+(
W/IInputConnectionWrapper﹕ getSelectedText on inactive InputConnection 
W/IInputConnectionWrapper﹕ setComposingText on inactive InputConnection 
D/dalvikvm﹕ GC_CONCURRENT freed 333K, 11% free 9617K/10695K, paused 14ms+4ms, total 72ms 
D/SensorManager﹕ unregisterListener:: Trklfufi 9 [email protected],)+*cf+(
D/Sensors﹕ Remain listener = Sending .. normal delay 200ms 
I/Sensors﹕ sendDelay --- 200000000 
D/SensorManager﹕ JNI - sendDelay 
I/SensorManager﹕ Set normal delay = true 
D/SensorManager﹕ registerListener :: handle = 4 name= BMA222 3-axis Accelerometer delay= 200000 Trklfufi 9 [email protected],)+*fa88 
W/IInputConnectionWrapper﹕ getSelectedText on inactive InputConnection 
W/IInputConnectionWrapper﹕ setComposingText on inactive InputConnection 
D/SensorManager﹕ unregisterListener:: Trklfufi 9 [email protected],)+*fa88 
D/Sensors﹕ Remain listener = Sending .. normal delay 200ms 
I/Sensors﹕ sendDelay --- 200000000 
D/SensorManager﹕ JNI - sendDelay 
I/SensorManager﹕ Set normal delay = true 
D/SensorManager﹕ registerListener :: handle = 4 name= BMA222 3-axis Accelerometer delay= 200000 Trklfufi 9 [email protected],)+)(+/(
W/IInputConnectionWrapper﹕ getSelectedText on inactive InputConnection 
W/IInputConnectionWrapper﹕ setComposingText on inactive InputConnection 
D/SensorManager﹕ unregisterListener:: Trklfufi 9 [email protected],)+)(+/(
D/Sensors﹕ Remain listener = Sending .. normal delay 200ms 
I/Sensors﹕ sendDelay --- 200000000 
D/SensorManager﹕ JNI - sendDelay 
I/SensorManager﹕ Set normal delay = true 
W/IInputConnectionWrapper﹕ showStatusIcon on inactive InputConnection 
D/SensorManager﹕ registerListener :: handle = 4 name= BMA222 3-axis Accelerometer delay= 200000 Trklfufi 9 [email protected],)+-+88(
D/AndroidRuntime﹕ Shutting down VM 
W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0x419222a0) 
E/AndroidRuntime﹕ FATAL EXCEPTION: main 
    java.lang.NumberFormatException: Invalid int: "" 
      at java.lang.Integer.invalidInt(Integer.java:138) 
      at java.lang.Integer.parseInt(Integer.java:359) 
      at java.lang.Integer.parseInt(Integer.java:332) 
      at com.example.raju.myapp1.MyActivity.onClick(MyActivity.java:111) 
      at android.view.View.performClick(View.java:4162) 
      at android.view.View$PerformClick.run(View.java:17082) 
      at android.os.Handler.handleCallback(Handler.java:615) 
      at android.os.Handler.dispatchMessage(Handler.java:92) 
      at android.os.Looper.loop(Looper.java:137) 
      at android.app.ActivityThread.main(ActivityThread.java:4856) 
      at java.lang.reflect.Method.invokeNative(Native Method) 
      at java.lang.reflect.Method.invoke(Method.java:511) 
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1007) 
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:774) 
      at dalvik.system.NativeStart.main(Native Method) 
+0

你可以把你的日志? – 2014-11-24 11:55:05

+0

发表您的logcat error..may是存在问题与面包.. – Meenal 2014-11-24 11:55:39

+1

insted的getApplicationContext()使用classname.thisñ尝试... – 2014-11-24 11:56:28

makeText方法的第一个参数,必须为ActivityApplication
使用引用您的Activity对象作为第一个参数makeText方法。

+0

downvote的原因是什么? – aga 2014-11-24 12:12:29

你期待这Exception将由catch块被抓到但是这究竟是什么没有发生


我猜测,在数据库中rollNo场被指定为主键 ,并且当您尝试再次重新插入相同的卷号时,则会出现此SQLITE异常。因此,在数据库中插入任何记录之前,需要检查是否存在特定的卷号。

我去给你一些伪代码

rollnumber=enteredRolNumber 

if(enteredRollNumberisInDatabase) 
{ 
    //No insertion and a message that this roll number already exists 
} 
else 
{ 
    //Do your insertion here 
} 

并在代码中,有这样的不检查,你正在做它像

try { 
      db.execSQL("insert into stud values('" + rollno + "','" + name + "','" + marks + "');"); 
      Toast.makeText(getApplicationContext(), "Data saved", Toast.LENGTH_LONG).show(); 
     } 
     catch(Exception e) 
     { 
      Toast.makeText(getApplicationContext(), "Data already present", Toast.LENGTH_LONG).show(); 

     } 
+0

[见本太](http://*.com/questions/8283844/sqliteexception-not-being-caught) – nobalG 2014-11-24 12:30:39