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

Программирование Android

Войти
Регистрация
Восстановить пароль
 
NapalmRain
38 / 38 / 3
Регистрация: 18.05.2010
Сообщений: 631
#1

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

20.04.2013, 14:12. Просмотров 1029. Ответов 8
Метки нет (Все метки)

Доброго всем времени суток!
Вот есть приложение по работе с MySQL.
Тему эту мы разобрали, и вроде все прекрасно.
Одно маленькое "но"
При вызове функции с подключением получается такая ситуация, если неправильно указан хост, логин, пароль, ошибка синтаксиса, любая ошибка.
В независимости от того, что почти каждое действие заключено в try приложение к фигам вылетает. Смотрю лог ошибки, а там просто пароль неверный...

Прошу подсказки, как бороться с этой ерундой.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.04.2013, 14:12
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вылетает приложение при возникновении ошибки (Программирование Android):

Из-за какой-то ошибки вылетает приложение - Программирование Android
При нажатии на кнопку button9 (функция changeWay) происходит какая-то ошибка и вылетает приложение. package...

Вылетает приложение при запуске - Программирование Android
Здравствуйте. Столкнулся со следующей проблемой. В приложении при запуске подключаются сразу несколько фрагментов, в каждом из которых...

Вылетает приложение при чтении файла - Программирование Android
Доброго времени суток))) Помогите решить проблему Имеется код:package ru.myscanner.scannerth; import java.io.FileInputStream; ...

Вылетает приложение при обращении к серверу - Программирование Android
Обращаюсь к серверу для получения списка продуктов. Сервер проверил, JSON ответ в порядке, на IOS работает без проблем. В случае с андроид...

Приложение вылетает при старте на 4.1, на 4.4 - работает - Программирование Android
Здравствуйте, Я написал приложение для android в eclipse 4.4.2. На телефоне с android 4.4.2 приложение отлично работает. На телефоне...

Вылетает приложение при нажатии на кнопку - Программирование Android
Здравствуйте, столкнулся с проблемой, что при нажатии на кнопку приложение вылетает. Программирую в Android Studio, кто нибудь сталкивался...

8
V0v1k
1159 / 983 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
20.04.2013, 14:35 #2
значит не отлавливаешь нужный екзепшен. чудес не бывает
0
NapalmRain
38 / 38 / 3
Регистрация: 18.05.2010
Сообщений: 631
20.04.2013, 15:41  [ТС] #3
V0v1k, а нельзя в try указать, что бы отлавливался любой екзепшен?
как в delphi например
Delphi
1
2
3
try
except
end;
0
V0v1k
1159 / 983 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
20.04.2013, 15:43 #4
можно

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

Добавлено через 12 секунд
покажите логи, код.
0
NapalmRain
38 / 38 / 3
Регистрация: 18.05.2010
Сообщений: 631
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
0
V0v1k
1159 / 983 / 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 проверять.
1
NapalmRain
38 / 38 / 3
Регистрация: 18.05.2010
Сообщений: 631
20.04.2013, 18:34  [ТС] #9
Благодарю!
помогло
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.04.2013, 18:34
Привет! Вот еще темы с ответами:

Вылетает приложение при использовании Adobe Air - Программирование Android
Создаю пустое приложение в adobe flash, Air для android , скидываю на телефон , при запуске вылетает с ошибкой . Android 5.1.1 nexus 5 ...

Фрагменты: приложение вылетает при 4-ом нажатии на кнопку - Программирование Android
Здравствуйте, в фрагменте есть кнопка, при нажатии на неё 3 раза приложение работает, на 4 вылетает, и пишет, что это из-за (View v =...

При изменении шрифта на собственный вылетает приложение - Программирование Android
Вылетает как только открываю Activity, которому принадлежит данный TextView. Изменяю шрифт так: ...

Вылетает приложение - Программирование Android
Вылетает при работе кода в кнопке sobr! package com.example.stracking; import android.app.Activity; import...


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

Или воспользуйтесь поиском по форуму:
9
Yandex
Объявления
20.04.2013, 18:34
Ответ Создать тему
Опции темы

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