在 android 上的 e3roid 场景填充过程中,我一直遇到异常,我想完全捕获这些异常。或许我需要创建一个我可以在闲暇时横向浏览的后台异常跟踪器,而不是直接对话会影响用户体验。
W/dalvikvm( 9540): threadid=1: thread exiting with uncaught exception (group=0x2
aac87c8)
E/AndroidRuntime( 9540): FATAL EXCEPTION: main
E/AndroidRuntime( 9540): java.util.ConcurrentModificationException
E/AndroidRuntime( 9540): at java.util.ArrayList$ArrayListIterator.next(Ar
rayList.java:573)
整个应用程序死于异常对话。我希望能够从全局范围内捕获 ConcurrentModificationException,这样如果由于未知情况发生此类事件,整个应用程序就不会被处置。
** 编辑 **
在此 block 中,在 onSceneTouchEvent 期间被触发
try {
postUpdate(new AddShapeImpl(scene, onX, onY));
} finally {
}
我觉得我开火的速度太快了。我需要放慢速度。
* 跟进 *
我似乎解决了问题..我做了其中一个...
if ( ballspawning == false)
try {
Log.v(DEBUG_TAG, "onSceneTouchEvent 1-1");
addnewball(scene, onX, onY);
Log.v(DEBUG_TAG, "onSceneTouchEvent 1-2");
} finally {
}
你会看到,在我放入一个 ballspawning boolean 标志和一个辅助过程之后,我传递了我的生成值是多么的黄金......我把它变成了一个字段,它在我的迭代结束时被设置并在列表的横向发生了..哇哦!!太贴心了!
没有真正需要全局陷阱.. 只是很好的旧调试。但我仍然很想实现所有错误的全局处理程序。 待办事项
我又出现并发错误了。。
截图
我试图用
捕获 ConcurrentModificationException void uncaughtException(Thread t,
Throwable e){
Log.v(DEBUG_TAG, "uncaughtException **********");
Log.v(DEBUG_TAG,"thread " + t + " Throwable" + e.toString());
}
如您在上一个屏幕截图中所见,上述方法从未被调用。
ConcurrentModificationException 使应用程序崩溃并出现异常对话框。
**跟进**
我已经添加了
public class LauncherActivity extends E3Activity implements UncaughtExceptionHandler ,FPSListener,SceneUpdateListener
并且在运行时额外的未实现方法
@Override
public void uncaughtException(Thread t,Throwable e) {
Log.v(DEBUG_TAG, "uncaughtException **************");
Log.v(DEBUG_TAG,"thread " + t + " Throwable" + e.toString());
}
仍然没有异常捕获...<>
我也加了
newThread.setUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler(){
@Override
public void uncaughtException(Thread t, Throwable e) {
Log.v(DEBUG_TAG,"*************** ERROR! An exception occurred in " + t.getName() + ". Cause: " + e.getMessage());
}
});
newThread.start();
而且还是没有陷阱...
啊啊啊
呼呼!!
刚捕捉到异常!!查看屏幕截图...您将看到 !!!!!
http://img17.imageshack.us/img17/135/concurrentmodificatione.png
感谢所有让我努力深入了解 Java 异常处理的一切!!
我通过以下方式解决了并发问题
删除...
公共(public)类 LauncherActivity 扩展 E3Activity 实现 UncaughtExceptionHandler ,FPSListener,SceneUpdateListener
我必须原创......没有 UncaughtExceptionHandler 实现
并添加了一个由 Johnny Lee 详细介绍的类。 blog.dimond.de/?p=63
真的很甜。
>
最佳答案
使用Thread.setUncaughtExceptionHandler :
它需要一个 Thread.UncaughtExceptionHandler作为一个方法的接口(interface)的参数:uncaughtException(Thread t, Throwable e) .
来自文档:
Set the handler invoked when this thread abruptly terminates due to an uncaught exception.
不用说,您显然最好从源头修复异常。 ;-) 然而,我确实使用这个结构来发送错误报告,以防出现不可预见的错误。
关于java - 在 Android 操作系统上捕获未处理的 JAVA 运行时异常的最佳实践?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6223430/
很好奇,就使用rubyonrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提
Rackup通过Rack的默认处理程序成功运行任何Rack应用程序。例如:classRackAppdefcall(environment)['200',{'Content-Type'=>'text/html'},["Helloworld"]]endendrunRackApp.new但是当最后一行更改为使用Rack的内置CGI处理程序时,rackup给出“NoMethodErrorat/undefinedmethod`call'fornil:NilClass”:Rack::Handler::CGI.runRackApp.newRack的其他内置处理程序也提出了同样的反对意见。例如Rack
我真的很习惯使用Ruby编写以下代码:my_hash={}my_hash['test']=1Java中对应的数据结构是什么? 最佳答案 HashMapmap=newHashMap();map.put("test",1);我假设? 关于java-等价于Java中的RubyHash,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/22737685/
我正在学习Rails,并阅读了关于乐观锁的内容。我已将类型为integer的lock_version列添加到我的articles表中。但现在每当我第一次尝试更新记录时,我都会收到StaleObjectError异常。这是我的迁移:classAddLockVersionToArticle当我尝试通过Rails控制台更新文章时:article=Article.first=>#我这样做:article.title="newtitle"article.save我明白了:(0.3ms)begintransaction(0.3ms)UPDATE"articles"SET"title"='dwdwd
在Cooper的书BeginningRuby中,第166页有一个我无法重现的示例。classSongincludeComparableattr_accessor:lengthdef(other)@lengthother.lengthenddefinitialize(song_name,length)@song_name=song_name@length=lengthendenda=Song.new('Rockaroundtheclock',143)b=Song.new('BohemianRhapsody',544)c=Song.new('MinuteWaltz',60)a.betwee
我早就知道Ruby中的“常量”(即大写的变量名)不是真正常量。与其他编程语言一样,对对象的引用是唯一存储在变量/常量中的东西。(侧边栏:Ruby确实具有“卡住”引用对象不被修改的功能,据我所知,许多其他语言都没有提供这种功能。)所以这是我的问题:当您将一个值重新分配给常量时,您会收到如下警告:>>FOO='bar'=>"bar">>FOO='baz'(irb):2:warning:alreadyinitializedconstantFOO=>"baz"有没有办法强制Ruby抛出异常而不是打印警告?很难弄清楚为什么有时会发生重新分配。 最佳答案
我正在尝试使用boilerpipe来自JRuby。我看过guide从JRuby调用Java,并成功地将它与另一个Java包一起使用,但无法弄清楚为什么同样的东西不能用于boilerpipe。我正在尝试基本上从JRuby中执行与此Java等效的操作:URLurl=newURL("http://www.example.com/some-location/index.html");Stringtext=ArticleExtractor.INSTANCE.getText(url);在JRuby中试过这个:require'java'url=java.net.URL.new("http://www
我只想对我一直在思考的这个问题有其他意见,例如我有classuser_controller和classuserclassUserattr_accessor:name,:usernameendclassUserController//dosomethingaboutanythingaboutusersend问题是我的User类中是否应该有逻辑user=User.newuser.do_something(user1)oritshouldbeuser_controller=UserController.newuser_controller.do_something(user1,user2)我
什么是ruby的rack或python的Java的wsgi?还有一个路由库。 最佳答案 来自Python标准PEP333:Bycontrast,althoughJavahasjustasmanywebapplicationframeworksavailable,Java's"servlet"APImakesitpossibleforapplicationswrittenwithanyJavawebapplicationframeworktoruninanywebserverthatsupportstheservletAPI.ht
导读:随着叮咚买菜业务的发展,不同的业务场景对数据分析提出了不同的需求,他们希望引入一款实时OLAP数据库,构建一个灵活的多维实时查询和分析的平台,统一数据的接入和查询方案,解决各业务线对数据高效实时查询和精细化运营的需求。经过调研选型,最终引入ApacheDoris作为最终的OLAP分析引擎,Doris作为核心的OLAP引擎支持复杂地分析操作、提供多维的数据视图,在叮咚买菜数十个业务场景中广泛应用。作者|叮咚买菜资深数据工程师韩青叮咚买菜创立于2017年5月,是一家专注美好食物的创业公司。叮咚买菜专注吃的事业,为满足更多人“想吃什么”而努力,通过美好食材的供应、美好滋味的开发以及美食品牌的孵