Thread.UncaughtExceptionHandler 声明当处理未捕获的异常的方法本身抛出异常时,该异常将被忽略:
void uncaughtException(Thread t,Throwable e):
当给定线程由于给定的未捕获异常而终止时调用的方法.
Java虚拟机将忽略此方法抛出的任何异常.
但是当我测试它时,JVM没有忽略未捕获的异常处理程序处理的异常:
public static void main(final String args[]) {
Thread.currentThread().setUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
@Override
public void uncaughtException(Thread arg0, Throwable arg1) {
throw new java.lang.RuntimeException("e2");
}
});
throw new RuntimeException("e1");
}
Run Code Online (Sandbox Code Playgroud)
Eclipse控制台输出(JRE 1.7):
异常:从线程"main"中的UncaughtExceptionHandler抛出java.lang.RuntimeException
我发现的另一个奇怪的是我得到的输出不是来自System.err.它似乎完全来自另一个流.我通过重定向System.err来验证这一点System.out,但我仍然得到"红色"输出:
public static void main(final String[] args) {
System.setErr(System.out);
System.out.println(System.err == System.out);
System.err.println("this is black color");
try {
throw new Error("test stacktrace color");
} catch (Throwable e) {
e.printStackTrace();
}
try {
Thread.sleep(2500);
} …Run Code Online (Sandbox Code Playgroud) java jvm exception-handling uncaught-exception uncaughtexceptionhandler
这里有一些代码可以捕获Event Dispatch Thread上抛出的异常:
package com.ndh.swingjunk;
import java.awt.EventQueue;
import javax.swing.JFrame;
public class EntryPoint {
public static void main(String[] args) {
Thread.setDefaultUncaughtExceptionHandler(new MyExceptionHandler());
// System.setProperty("sun.awt.exception.handler", MyExceptionHandler.class.getName());
EventQueue.invokeLater(new Runnable()
{
public void run()
{
new SomeWindow("foo").setVisible(true);
}
});
}
}
class SomeWindow extends JFrame {
public SomeWindow(String title) {
this.setTitle(title);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
throw new RuntimeException("hello");
}
}
Run Code Online (Sandbox Code Playgroud)
我已经看到警告,事件调度线程抛出的异常不会被UncaughtExceptionHandler处理,但对我的例子来说似乎并非如此; 无论注册行是注释掉还是遗留下来,它的工作方式都是一样的.我的示例是以某种方式搞砸了,还是注册了sun.awt.exception.handler不再需要的异常处理程序?
我正在使用此代码来处理可能导致我的应用程序崩溃的任何未捕获的异常.
public class ExceptionHandler implements java.lang.Thread.UncaughtExceptionHandler {
private final Context myContext;
public ExceptionHandler(Context context) {
myContext = context;
}
public void uncaughtException(Thread thread, Throwable exception) {
Toast.makeText(myContext,
"The application has crashed, and a report is sent to the admin",
Toast.LENGTH_SHORT).show();
StringWriter stackTrace = new StringWriter();
exception.printStackTrace(new PrintWriter(stackTrace));
System.err.println(stackTrace);// You can use LogCat too
Intent intent = new Intent(myContext, CrashActivity.class);
myContext.startActivity(intent);
Process.killProcess(Process.myPid());
System.exit(10);
}
}
Run Code Online (Sandbox Code Playgroud)
当我使用已知但未捕获的异常(仅测试)运行它时,会调用活动"CrashActivity",但必须在它之前出现的Toast才会显示.
其实我只想显示Toast,然后调用myContext.finish(); 而不是去CrashActivity.但那种敬酒不可见.
我哪里错了?
我一直在为几个实现多级日志记录的应用程序开发框架.它主要用于内部用于测试与其他设备通信的应用程序,但也用于我们将要分发的一些应用程序中.
有没有办法捕获未捕获的异常并立即执行代码以将异常保存到日志文件中?目前,Log类只是经常写入文件,在写入失败的情况下在两个文件之间交替等等.这样可以正常工作,但是如果它可以看到发生未处理的异常,写入任何未写入的日志会很棒要记录的条目,请注意发生异常并记录其详细信息,然后允许该应用程序崩溃.
如果有一些方法来捕捉应用程序范围内未处理的异常,我会认为它会是这样的:
appDidReceiveUnhandledException:(NSException *)exception
{
//write log to disk
//append exception info to log file
//rethrow exception
}
Run Code Online (Sandbox Code Playgroud)
如果有人能够就这是否可能给我提供见解或建议,我们将不胜感激.
当我想在 Metro Bunler 上运行我的 Expo 应用程序时,出现错误。这是错误:
“未捕获错误。java.net.SocketTimeoutException。10000毫秒后无法从(端口 ( ) 连接到 exp.host/104.197.216.164(端口 443)”
我尝试了不同的方法。升级expo-cli、降级expo-cli、禁用防火墙、禁用防病毒。没有解决问题有人可以帮忙吗?提前致谢
正如标题所说,我的UncaughtExceptionHandler自定义应用程序类中有一个集合,在我的应用程序启动时被设置为默认值.
但是,虽然没有在文档中我读过你无法实例化Dialog使用MyApplication.this或getApplicationContext().当我尝试这样做时,我会得到一个
窗口管理器,$ BadTokenException ...
我需要另一种选择.我曾想过要做一个新的活动来弥补这一点,但宁愿让它成为一个AlertDialog.
有没有办法可以UncaughtExceptionHandler从MyApplication课堂内获得有效的上下文?
以下代码是从storyboard向当前视图添加子视图:
EventSearchViewController* view1 = [self.storyboard instantiateViewControllerWithIdentifier:@"searchView"];
[view1 setBookingSystem:system];
[self.view addSubview:view1.view];
Run Code Online (Sandbox Code Playgroud)
在视图"view1"中,有一个textField.以下是textField的IBAction,事件是"退出时结束".
-(IBAction)searchKeyword:(id *)sender
{
NSLog(@"searchKeyword");
}
Run Code Online (Sandbox Code Playgroud)
以下是错误消息.
2012-05-26 20:26:47.369 OnlineBooking [6607:f803] - [__ NSCFType searchKeyword:]:无法识别的选择器发送到实例0x6d8eb80
2012-05-26 20:26:47.369 OnlineBooking [6607:f803] * WebKit在webView中丢弃了一个未捕获的异常:shouldInsertText:replacementDOMRange:givenAction:delegate: - [__ NSCFType searchKeyword:]:发送到实例0x6d8eb80的无法识别的选择器
我正在试验Backbone.js,我只是想在控制台屏幕上弹出消息.然而,每次我这样做时都会出现错误(如下所示)
Uncaught TypeError: Expecting a function in instanceof check, but got [object Object] backbone.js:1032
_.extend.setElement backbone.js:1032
_.extend._ensureElement backbone.js:1104
Backbone.View backbone.js:986
child backbone.js:1531
(anonymous function) pageLoader.js:19
(anonymous function)
Run Code Online (Sandbox Code Playgroud)
这是JavaScript文件
(function ($){
window.PageLoader = Backbone.View.extend({
el: $("section"),
events: {
"": "initialization",
"click #aboutUs" : "aboutUs",
},
initialization: function(){
console.log('pageLoader.js initialized\nHome page rendered');
},
aboutUs:function(){
console.log('About us page rendered.');
}
});
var pageLoader = new PageLoader();
//pageLoader.initialization();
//pageLoader.aboutUs();
})(jQuery);
Run Code Online (Sandbox Code Playgroud)
这里还有HTML
<html>
<head>
<link rel="stylesheet" type="text/css" href="css/main.css">
<meta />
<meta />
<title>Bus tours and …Run Code Online (Sandbox Code Playgroud) 在我的应用程序中有一个使用flowLayout的UICollectionView,它在iOS 6中工作得非常漂亮,但在iOS 7中失败了.只要我看到包含我的UICollectionView的视图,就会发生以下情况:
*** Assertion failure in -[UICollectionView _createPreparedSupplementaryViewForElementOfKind:atIndexPath:withLayoutAttributes:applyAttributes:], /SourceCache/UIKit/UIKit-2903.2/UICollectionView.m:1401
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'the view returned from -collectionView:viewForSupplementaryElementOfKind:atIndexPath
(UICollectionElementKindSectionHeader,<NSIndexPath: 0x145f3f50> {length = 2, path = 0 - 0}) was not retrieved by calling -dequeueReusableSupplementaryViewOfKind:withReuseIdentifier:forIndexPath: or is nil'
(<UICollectionReusableView: 0x145f9400; frame = (0 0; 320 20); layer = <CALayer: 0x145f90c0>>)
Run Code Online (Sandbox Code Playgroud) 我已经提到了select2 jquery插件提供的这个文档. http://ivaynberg.github.io/select2/
但是,当我使用此代码来限制用户一次可以选择的选项数量时:
$(document).ready(function(){
$(".select2").select2({ maximumSelectionSize: 2 });
});
Run Code Online (Sandbox Code Playgroud)
以下是select标签的html:
<select id="store-name" name="state[]" class="select2-select-00 span6" multiple size="5"
data-placeholder="Store" style="height:25px;">
<?php foreach ($this->Store->get_all_stores_names() as $row) {
//print_r($row);
echo '<option value="' . $row->name . '"> ' . $row->name . '</option>';
}
?>
</select>
Run Code Online (Sandbox Code Playgroud)
当我尝试限制它时,我在控制台中收到此错误,"Uncaught TypeError:Object [object Object]没有方法'select2'".为什么?我的意思是select2工作正常,这意味着它正在加载js文件,那么为什么我无法限制它?谢谢
android ×2
java ×2
javascript ×2
objective-c ×2
awt ×1
backbone.js ×1
exception ×1
expo ×1
ios ×1
ios6 ×1
ios7 ×1
jvm ×1
limit ×1
logging ×1
react-native ×1
swing ×1
toast ×1
xcode5 ×1