Форум программистов, компьютерный форум CyberForum.ru

Вылетает приложение при возникновении ошибки - Android

Войти
Регистрация
Восстановить пароль
 
NapalmRain
 Аватар для NapalmRain
37 / 37 / 2
Регистрация: 18.05.2010
Сообщений: 624
20.04.2013, 14:12     Вылетает приложение при возникновении ошибки #1
Доброго всем времени суток!
Вот есть приложение по работе с MySQL.
Тему эту мы разобрали, и вроде все прекрасно.
Одно маленькое "но"
При вызове функции с подключением получается такая ситуация, если неправильно указан хост, логин, пароль, ошибка синтаксиса, любая ошибка.
В независимости от того, что почти каждое действие заключено в try приложение к фигам вылетает. Смотрю лог ошибки, а там просто пароль неверный...

Прошу подсказки, как бороться с этой ерундой.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
V0v1k
1157 / 981 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
20.04.2013, 14:35     Вылетает приложение при возникновении ошибки #2
значит не отлавливаешь нужный екзепшен. чудес не бывает
NapalmRain
 Аватар для NapalmRain
37 / 37 / 2
Регистрация: 18.05.2010
Сообщений: 624
20.04.2013, 15:41  [ТС]     Вылетает приложение при возникновении ошибки #3
V0v1k, а нельзя в try указать, что бы отлавливался любой екзепшен?
как в delphi например
Delphi
1
2
3
try
except
end;
V0v1k
1157 / 981 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
20.04.2013, 15:43     Вылетает приложение при возникновении ошибки #4
можно

Java
1
2
3
try {
} catch(Exception e) {
}
NapalmRain
 Аватар для NapalmRain
37 / 37 / 2
Регистрация: 18.05.2010
Сообщений: 624
20.04.2013, 15:52  [ТС]     Вылетает приложение при возникновении ошибки #5
Как говорится, а ларчик просто открывался, но увы, не помогло.
Всё равно при отладке вылетает сообщение на эмуляторе об ошибке и предложение force close
V0v1k
1157 / 981 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
20.04.2013, 15:55     Вылетает приложение при возникновении ошибки #6
значит в другом месте падает, подебагайте.

Добавлено через 12 секунд
покажите логи, код.
NapalmRain
 Аватар для NapalmRain
37 / 37 / 2
Регистрация: 18.05.2010
Сообщений: 624
20.04.2013, 17:51  [ТС]     Вылетает приложение при возникновении ошибки #7
Код программы:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
 
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
 
public class MainActivity extends Activity implements OnClickListener {
    
    Button opensetting, quit, login;
    SharedPreferences sPref;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        quit = (Button) findViewById(R.id.quit);
        quit.setOnClickListener(this);
        login = (Button) findViewById(R.id.LogIn);
        login.setOnClickListener(this);
        opensetting = (Button) findViewById(R.id.setting);
        opensetting.setOnClickListener(this);
    }
 
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
 
    @Override
    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.setting:
            Intent intent = new Intent(this, AppSetting.class);
            startActivity(intent);
            break;
        case R.id.LogIn:
            connect();
            break;
        default:
          break;
        }
        
    }
    
    void connect() {
        try {
                Log.d("My Logs", "Запускаем поток");
                Thread t = new Thread(new Runnable() {
                public void run() {
                                Connection conn = null;
                                sPref = getSharedPreferences("Setting", MODE_PRIVATE);
                                String hostname = sPref.getString("HOST", "");
                                String userName = sPref.getString("mlogin", "");
                                String password = sPref.getString("mpass", "");
                                String url = "jdbc:mysql://"+hostname+":3306/srv29435_rain";
                                try {
                                    Log.d("My Logs", "Подключаем драйвер");
                                    Class.forName("com.mysql.jdbc.Driver").newInstance();
                                    Log.d("My Logs", "Подключили");                   
                                } catch (InstantiationException e) {
                                    Log.d("My Logs", "не подключили");
                                                        // TODO Auto-generated catch block
                                                        Log.e("My Logs",Log.getStackTraceString(e));
                                } catch (IllegalAccessException e) {
                                    Log.d("My Logs", "Не подключили, правов маловато");
                                                        // TODO Auto-generated catch block
                                                        Log.e("My Logs",Log.getStackTraceString(e));
                                } catch (ClassNotFoundException e) {
                                    Log.d("My Logs", "Не подключили класс не найден");
                                                        // TODO Auto-generated catch block
                                                        Log.e("My Logs",Log.getStackTraceString(e));
                                }
                                try {
                                    Log.d("My Logs", "Подключаемся");                    
                                    conn = DriverManager.getConnection(url, userName, password);
                                    Log.d("My Log", "Подключилось");
                                } catch (Exception e) {
                                    Log.e("My Logs", "Не получилось");
                                    Log.e("My Logs",Log.getStackTraceString(e));
                                }
                                try {
                                    conn.close();
                                } catch (SQLException e) {
                                    Log.e("My Logs",Log.getStackTraceString(e));
                                }
                      }
                    });
                    t.start();
                } catch (Exception e) {
                        Log.e("My Logs",Log.getStackTraceString(e));
                        System.err.println("Не вышло");
                }
    }
 
}
Логи:
Код
04-20 13:47:01.324: D/My Logs(337): Запускаем поток
04-20 13:47:01.354: D/My Logs(337): Подключаем драйвер
04-20 13:47:01.393: D/My Logs(337): Подключили
04-20 13:47:01.393: D/My Logs(337): Подключаемся
04-20 13:47:03.194: D/dalvikvm(337): GC_CONCURRENT freed 232K, 50% free 2964K/5831K, external 731K/1038K, paused 11ms+11ms
04-20 13:47:03.604: W/dalvikvm(337): VFY: unable to find class referenced in signature (Ljavax/naming/Reference;)
04-20 13:47:03.604: I/dalvikvm(337): Could not find method javax.naming.Reference.get, referenced from method com.mysql.jdbc.ConnectionPropertiesImpl$ConnectionProperty.initializeFrom
04-20 13:47:03.604: W/dalvikvm(337): VFY: unable to resolve virtual method 11702: Ljavax/naming/Reference;.get (Ljava/lang/String;)Ljavax/naming/RefAddr;
04-20 13:47:03.604: D/dalvikvm(337): VFY: replacing opcode 0x6e at 0x0004
04-20 13:47:03.604: D/dalvikvm(337): VFY: dead code 0x0007-0013 in Lcom/mysql/jdbc/ConnectionPropertiesImpl$ConnectionProperty;.initializeFrom (Ljavax/naming/Reference;)V
04-20 13:47:03.624: W/dalvikvm(337): VFY: unable to find class referenced in signature (Ljavax/naming/Reference;)
04-20 13:47:03.624: E/dalvikvm(337): Could not find class 'javax.naming.StringRefAddr', referenced from method com.mysql.jdbc.ConnectionPropertiesImpl$ConnectionProperty.storeTo
04-20 13:47:03.624: W/dalvikvm(337): VFY: unable to resolve new-instance 986 (Ljavax/naming/StringRefAddr;) in Lcom/mysql/jdbc/ConnectionPropertiesImpl$ConnectionProperty;
04-20 13:47:03.624: D/dalvikvm(337): VFY: replacing opcode 0x22 at 0x0006
04-20 13:47:03.624: D/dalvikvm(337): VFY: dead code 0x0008-0019 in Lcom/mysql/jdbc/ConnectionPropertiesImpl$ConnectionProperty;.storeTo (Ljavax/naming/Reference;)V
04-20 13:47:04.434: I/dalvikvm(337): Could not find method java.lang.management.ManagementFactory.getThreadMXBean, referenced from method com.mysql.jdbc.MysqlIO.appendDeadlockStatusInformation
04-20 13:47:04.434: W/dalvikvm(337): VFY: unable to resolve static method 11042: Ljava/lang/management/ManagementFactory;.getThreadMXBean ()Ljava/lang/management/ThreadMXBean;
04-20 13:47:04.463: D/dalvikvm(337): VFY: replacing opcode 0x71 at 0x0079
04-20 13:47:04.463: D/dalvikvm(337): VFY: dead code 0x007c-00a9 in Lcom/mysql/jdbc/MysqlIO;.appendDeadlockStatusInformation (Ljava/lang/String;Ljava/lang/StringBuffer;)V
04-20 13:47:04.493: D/dalvikvm(337): VFY: dead code 0x00ea-020a in Lcom/mysql/jdbc/MysqlIO;.appendDeadlockStatusInformation (Ljava/lang/String;Ljava/lang/StringBuffer;)V
04-20 13:47:04.756: D/dalvikvm(337): GC_CONCURRENT freed 197K, 48% free 3169K/6023K, external 731K/1038K, paused 14ms+12ms
04-20 13:47:06.464: E/My Logs(337): Не получилось
04-20 13:47:06.474: E/My Logs(337): java.sql.SQLException: Access denied for user 'user'@'5.19.252.48' (using password: YES)
04-20 13:47:06.474: E/My Logs(337): 	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1078)
04-20 13:47:06.474: E/My Logs(337): 	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4120)
04-20 13:47:06.474: E/My Logs(337): 	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4052)
04-20 13:47:06.474: E/My Logs(337): 	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:925)
04-20 13:47:06.474: E/My Logs(337): 	at com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1704)
04-20 13:47:06.474: E/My Logs(337): 	at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1250)
04-20 13:47:06.474: E/My Logs(337): 	at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2483)
04-20 13:47:06.474: E/My Logs(337): 	at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2516)
04-20 13:47:06.474: E/My Logs(337): 	at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2301)
04-20 13:47:06.474: E/My Logs(337): 	at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:834)
04-20 13:47:06.474: E/My Logs(337): 	at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
04-20 13:47:06.474: E/My Logs(337): 	at java.lang.reflect.Constructor.constructNative(Native Method)
04-20 13:47:06.474: E/My Logs(337): 	at java.lang.reflect.Constructor.newInstance(Constructor.java:415)
04-20 13:47:06.474: E/My Logs(337): 	at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
04-20 13:47:06.474: E/My Logs(337): 	at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:416)
04-20 13:47:06.474: E/My Logs(337): 	at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:317)
04-20 13:47:06.474: E/My Logs(337): 	at java.sql.DriverManager.getConnection(DriverManager.java:180)
04-20 13:47:06.474: E/My Logs(337): 	at java.sql.DriverManager.getConnection(DriverManager.java:214)
04-20 13:47:06.474: E/My Logs(337): 	at ru.dev.rainsupportsystem.MainActivity$1.run(MainActivity.java:91)
04-20 13:47:06.474: E/My Logs(337): 	at java.lang.Thread.run(Thread.java:1019)
04-20 13:47:06.483: W/dalvikvm(337): threadid=9: thread exiting with uncaught exception (group=0x40015560)
04-20 13:47:06.493: E/AndroidRuntime(337): FATAL EXCEPTION: Thread-10
04-20 13:47:06.493: E/AndroidRuntime(337): java.lang.NullPointerException
04-20 13:47:06.493: E/AndroidRuntime(337): 	at ru.dev.rainsupportsystem.MainActivity$1.run(MainActivity.java:98)
04-20 13:47:06.493: E/AndroidRuntime(337): 	at java.lang.Thread.run(Thread.java:1019)
04-20 13:47:13.014: I/Process(337): Sending signal. PID: 337 SIG: 9
04-20 13:51:13.353: D/dalvikvm(348): GC_EXPLICIT freed 55K, 53% free 2577K/5379K, external 716K/1038K, paused 91ms
V0v1k
1157 / 981 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
20.04.2013, 18:26     Вылетает приложение при возникновении ошибки #8
NullPointerException MainActivity.java:98

Добавлено через 1 минуту
логи с екзепшена я обычно вывожу так:
Java
1
e.printStackTrace();
Добавлено через 4 минуты
вы выложили не весь код. где пекедж? строки в коде не совпадают с логами.

Добавлено через 1 минуту
то, что вы заключили в try создание и запуск потока не значит что он будет ловить ошибки в потоке.

Добавлено через 2 минуты
такого обилия try-catch я никогда не видел.

Добавлено через 1 минуту
Цитата Сообщение от NapalmRain Посмотреть сообщение
conn.close();
нужно сначала ну null проверять.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.04.2013, 18:34     Вылетает приложение при возникновении ошибки
Еще ссылки по теме:

Вылетает приложение при нажатии на кнопку Android
Android Вылетает приложение при запуске
Android Фрагменты: приложение вылетает при 4-ом нажатии на кнопку
Android При изменении шрифта на собственный вылетает приложение
Из-за какой-то ошибки вылетает приложение Android

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
NapalmRain
 Аватар для NapalmRain
37 / 37 / 2
Регистрация: 18.05.2010
Сообщений: 624
20.04.2013, 18:34  [ТС]     Вылетает приложение при возникновении ошибки #9
Благодарю!
помогло
Yandex
Объявления
20.04.2013, 18:34     Вылетает приложение при возникновении ошибки
Ответ Создать тему
Опции темы

Текущее время: 18:02. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru