相关疑难解决方法(0)

Java/Android - 如何打印出完整的堆栈跟踪?

在Android(Java)中,如何打印出完整的堆栈跟踪?如果我的应用程序从nullPointerException或其他东西崩溃,它会打印出一个(几乎)完整的堆栈跟踪,如下所示:

java.io.IOException: Attempted read from closed stream.
com.android.music.sync.common.SoftSyncException: java.io.IOException: Attempted read from closed stream.
    at com.android.music.sync.google.MusicSyncAdapter.getChangesFromServerAsDom(MusicSyncAdapter.java:545)
    at com.android.music.sync.google.MusicSyncAdapter.fetchDataFromServer(MusicSyncAdapter.java:488)
    at com.android.music.sync.common.AbstractSyncAdapter.download(AbstractSyncAdapter.java:417)
    at com.android.music.sync.common.AbstractSyncAdapter.innerPerformSync(AbstractSyncAdapter.java:313)
    at com.android.music.sync.common.AbstractSyncAdapter.onPerformLoggedSync(AbstractSyncAdapter.java:243)
    at com.google.android.common.LoggingThreadedSyncAdapter.onPerformSync(LoggingThreadedSyncAdapter.java:33)
    at android.content.AbstractThreadedSyncAdapter$SyncThread.run(AbstractThreadedSyncAdapter.java:164)
Caused by: java.io.IOException: Attempted read from closed stream.
    at org.apache.http.impl.io.ChunkedInputStream.read(ChunkedInputStream.java:148)
    at org.apache.http.conn.EofSensorInputStream.read(EofSensorInputStream.java:159)
    at java.util.zip.GZIPInputStream.readFully(GZIPInputStream.java:212)
    at java.util.zip.GZIPInputStream.<init>(GZIPInputStream.java:81)
    at java.util.zip.GZIPInputStream.<init>(GZIPInputStream.java:64)
    at android.net.http.AndroidHttpClient.getUngzippedContent(AndroidHttpClient.java:218)
    at com.android.music.sync.api.MusicApiClientImpl.createAndExecuteMethod(MusicApiClientImpl.java:312)
    at com.android.music.sync.api.MusicApiClientImpl.getItems(MusicApiClientImpl.java:588)
    at com.android.music.sync.api.MusicApiClientImpl.getTracks(MusicApiClientImpl.java:638)
    at com.android.music.sync.google.MusicSyncAdapter.getChangesFromServerAsDom(MusicSyncAdapter.java:512)
    ... 6 more
Run Code Online (Sandbox Code Playgroud)

但有时,出于调试目的,我想从代码中的位置记录完整的堆栈跟踪.我想我可以这样做:

StackTraceElement trace = new Exception().getStackTrace();
Log.d("myapp", trace.toString());
Run Code Online (Sandbox Code Playgroud)

但是这只是打印出指向对象的指针......我是否必须遍历所有堆栈跟踪元素才能将它们打印出来?或者有一种简单的方法可以将它全部打印出来吗?

java stack android exception stack-trace

120
推荐指数
6
解决办法
8万
查看次数

如何打印异常Android的堆栈跟踪

我想打印堆栈跟踪,因为此刻我正在运行.

} catch (IOException e) {
    throw new Error("Copying Failed");
}
Run Code Online (Sandbox Code Playgroud)

我被告知打印 e.stacktrace();

我该怎么做呢?

android android-logcat

30
推荐指数
4
解决办法
4万
查看次数

在Android Studio中使用JDBC苦苦挣扎

我正在尝试从我开发的Android应用程序在我的SQL Server数据库上运行存储过程.我现在只是搞乱了,但我似乎无法让它运行.事情是我没有得到任何类型的错误或崩溃 - 应用程序工作正常,我可以单击按钮,存储过程似乎不想运行.

SP在表中创建一行.我在SQL服务器上测试了它,它运行得很好.问题似乎是从我的应用程序执行它..

我想我已经正确设置了.

1)我已经在我的应用程序的libs文件夹中包含了正确的.jar文件.

2)我在build.gradle中包含了对库的引用: -

dependencies {
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.1.1'
    compile 'com.android.support:design:23.1.1'
    compile 'com.google.android.gms:play-services:8.3.0'
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile files('libs/jtds-1.3.1.jar')
}
Run Code Online (Sandbox Code Playgroud)

3)我已经导入了我需要的所有库(我认为): -

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
Run Code Online (Sandbox Code Playgroud)

4)我有一个按钮,当点击时应运行存储过程: -

@Override
public void onClick(View v) {
    try {
        Class.forName("net.sourceforge.jtds.jdbc.Driver").newInstance();
        String username = "myusername";
        String password = "mypassword";
        Connection DbConn = DriverManager.getConnection("jdbc:jtds:sqlserver://sql9.hostinguk.net/matprichardson;user=" + username + ";password=" + password);

        Log.w("Connection","Open");
        Statement stmt = DbConn.createStatement();
        stmt.execute("exec [matprichardson].[updatelatlong]");

        DbConn.close();
    } catch (Exception e) …
Run Code Online (Sandbox Code Playgroud)

java android jdbc android-studio

4
推荐指数
1
解决办法
1235
查看次数