Android-如何找到导致StringIndexOutOfBoundsException的原因

Android-如何找到导致StringIndexOutOfBoundsException的原因,android,multithreading,exception,Android,Multithreading,Exception,我有一个应用程序可以打开一个webview,并在另一个线程(asynctask)中定期通过http向服务器提交GPS数据 我看到以下异常,但很难确定其来源。你能帮忙吗?这里是Android的相对新手 V/ Exception Handler( 206): java.lang.StringIndexOutOfBoundsException V/ Exception Handler( 206): V/ Exception Handler( 206): --------- Stack t

我有一个应用程序可以打开一个webview,并在另一个线程(asynctask)中定期通过http向服务器提交GPS数据

我看到以下异常,但很难确定其来源。你能帮忙吗?这里是Android的相对新手

V/  Exception Handler(  206): java.lang.StringIndexOutOfBoundsException
V/  Exception Handler(  206): 
V/  Exception Handler(  206): --------- Stack trace ---------
V/  Exception Handler(  206): 
V/  Exception Handler(  206):     java.lang.String.<init>(String.java:190)
V/  Exception Handler(  206):     android.webkit.FrameLoader.populateStaticHeaders(FrameLoader.java:372)
V/  Exception Handler(  206):     android.webkit.FrameLoader.handleHTTPLoad(FrameLoader.java:222)
V/  Exception Handler(  206):     android.webkit.WebViewWorker.handleMessage(WebViewWorker.java:129)
V/  Exception Handler(  206):     android.os.Handler.dispatchMessage(Handler.java:99)
V/  Exception Handler(  206):     android.os.Looper.loop(Looper.java:130)
V/  Exception Handler(  206):     android.os.HandlerThread.run(HandlerThread.java:60)
V/异常处理程序(206):java.lang.StringIndexOutOfBoundsException
V/异常处理程序(206):
V/异常处理程序(206):-----------堆栈跟踪---------
V/异常处理程序(206):
异常处理程序(206):java.lang.String。(String.java:190)
V/Exception处理程序(206):android.webkit.FrameLoader.popularTestaticHeaders(FrameLoader.java:372)
异常处理程序(206):android.webkit.FrameLoader.handleHTTPLoad(FrameLoader.java:222)
异常处理程序(206):android.webkit.WebViewWorker.handleMessage(WebViewWorker.java:129)
异常处理程序(206):android.os.Handler.dispatchMessage(Handler.java:99)
异常处理程序(206):android.os.Looper.loop(Looper.java:130)
异常处理程序(206):android.os.HandlerThread.run(HandlerThread.java:60)

跟踪没有显示代码中是否有任何东西导致了这种情况。我只看到安卓系统代码(或者可能是我看得不对)

在字符串构造函数中具有StringIndexOutOfBoundsException非常罕见,我以前从未遇到过它。您将向AsyncTask传递什么样的数据(它随后将传递给WebKit)?它是字符串缓冲区还是数组

通常,当我无法推断错误的原因时,我会尝试:

  • 逐步检查代码以找出哪一行导致崩溃
  • 打印调试语句
编辑


当我试图在模拟器上强制执行
StringOutOfBoundsException
时,它是一个
致命异常
,日志级别是
错误
,日志标记是
AndroidRuntime
。在您的情况下,
ExceptionHandler
似乎捕获了异常,并以
Verbose
日志级别打印了堆栈跟踪。这个异常处理程序是您自己的吗?或者它属于android框架?

考虑使用调试器。吉姆:你说得对。我正在使用默认的未捕获异常处理程序,使用Thread.setDefaultUncaughtExceptionHandler(新的MyExceptionHandler(this))设置;在这种情况下,您是否能够在StringIndexOutOfBoundsException中打印消息?通常,此异常会告诉您当索引超出范围时它试图访问哪个索引。也许会有启发。