`
zsnlovewl
  • 浏览: 175460 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

run()外部捕获run()内未捕获的异常

    博客分类:
  • JAVA
阅读更多
package test;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.ThreadFactory;

class ExcetptionThread2 implements Runnable{

	@Override
	public void run() {
		Thread t=Thread.currentThread();
		System.out.println("run() by"+t);
		System.out.println("eh="+t.getUncaughtExceptionHandler());
		throw new NullPointerException();
		
		
	}
	
}
class MyUncaughtExceptionHandler implements Thread.UncaughtExceptionHandler{

	@Override
	public void uncaughtException(Thread t, Throwable e) {
		System.out.println("caught "+e);
		
	}
	
}
class HandlerThreadFactory implements ThreadFactory{

	@Override
	public Thread newThread(Runnable r) {
		System.out.println(this+"creating new Thread");
		Thread t=new Thread(r);
		System.out.println("created"+t);
		t.setUncaughtExceptionHandler(new MyUncaughtExceptionHandler());
		System.out.println("eh="+t.getUncaughtExceptionHandler());
		
		return t;
	}
	
}
public class CaptureUncaughtException {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		ExecutorService exec=Executors.newCachedThreadPool(new HandlerThreadFactory());
		exec.execute(new ExcetptionThread2());
	}

}

 

分享到:
评论

相关推荐

    WinForm捕获未处理的异常

    除了`ThreadException`,还可以监听`AppDomain`级别的`UnhandledException`事件,这可以捕获应用程序域内所有线程的未处理异常。同样,这个也需要在`Main`方法中设置: ```csharp AppDomain.CurrentDomain....

    WPF程序全局异常捕获示例

    如果Task中抛出异常而未被捕获,该异常会在Task完成后在调用者线程上重新抛出,可能导致应用程序崩溃。我们可以使用`TaskScheduler.UnobservedTaskException`事件来捕获这些未观察到的异常: ```csharp public ...

    java异常处理机制示例(java抛出异常、捕获、断言)

    虽然捕获的异常类型是`IOException`,但实际抛出的可能是`IllegalArgumentException`,这是因为捕获更广泛的异常类型是允许的。 3. **throw** 关键字:用于明确地抛出一个异常。例如,在`AssertTest`类的`div`方法...

    winform捕捉全局异常_winform_

    "winform捕捉全局异常"这个主题就是关于如何在WinForm应用程序中设置一个全局异常处理机制,以便在程序运行过程中捕获和处理未预期的错误,避免程序突然崩溃。下面将详细介绍这个知识点。 1. **异常处理基础**: ...

    详解Java中多线程异常捕获Runnable的实现

    Java 多线程异常捕获 Runnable 实现详解 Java 多线程编程是一个非常重要的知识点,然而在多线程编程中,异常捕获是一个很大的挑战。本文主要介绍了 Java 中多线程异常捕获 Runnable 的实现,包括背景、工具、思路、...

    子线程任务发生异常,主线程事务如何回滚

    其中,Callable 接口的 call 方法可以抛出异常,而 Runnable 接口的 run 方法不能抛出异常。因此,如果我们想捕获子线程的执行结果或异常,就应该使用 Callable 接口。 二、线程池的使用 在 Java 中,我们可以使用...

    IRUN读书笔记

    7. -debugscript:捕获IRUN环境变量和命令行执行情况,非常有用的Debug方式。 8. -l:重命名log文件,默认是irun.log。 9. -perfstata:生成ncperfstat.out文件,包含compile、elaborate和simulation阶段的时间和...

    UI界面多线程简单实现和线程捕获异常问题

    此外,可以使用`Thread.UnhandledException`事件来捕获线程级别的未处理异常,防止程序意外终止: ```csharp AppDomain.CurrentDomain.UnhandledException += (sender, e) => { // 记录或显示异常信息,然后关闭...

    Windows Mobile 摄像头视频流捕获

    除了上述步骤,还需要注意处理可能的错误和异常,如摄像头未连接、权限问题或内存不足等。此外,考虑到Windows Mobile的多线程特性,确保在捕获过程中正确同步各个组件是非常重要的。 总之,Windows Mobile摄像头...

    day08面向对象-内部类、异常.doc

    - 非运行时异常:必须被捕获或声明抛出的异常。 ##### 常见异常 - `NullPointerException`:尝试访问空对象的成员。 - `ArrayIndexOutOfBoundsException`:数组索引超出范围。 - `ClassCastException`:强制类型...

    android教程之hockeyapp捕获异常示例

    这样,当应用发生未捕获的异常时,HockeyApp会自动收集相关信息并发送到服务器。同时,你还可以自定义`onCrashesSent`和`onCrashesNotSent`回调来提供用户体验反馈。 在示例代码中,我们故意创建了一个运行时异常...

    Java多线程之多线程异常捕捉

    在这个例子中,尽管我们在main方法中尝试捕获异常,但线程在run方法中抛出的异常并不会被捕获。异常信息会被直接打印到控制台,导致程序无法正常处理异常。 那么,如何在多线程环境中捕获并处理异常呢?以下是一种...

    java多线程编程之捕获子线程异常示例

    根据标题和描述,我们将讨论如何在Java中捕获子线程的异常,特别是如何处理那些未被捕获的异常,包括Checked和Unchecked异常。 首先,我们来了解一下Java中的异常分类。异常在Java中分为两种类型:Checked异常和...

    RUN_sobel_边缘检测_run_OV5640_视频采集_

    在本文中,我们将深入探讨如何使用RUN_sobel_边缘检测_run_OV5640_视频采集相关的技术,包括边缘检测、OV5640传感器、视频采集以及HDMI输出。这些知识点在图像处理和嵌入式系统领域具有重要的应用。 1. **边缘检测*...

    逆向分析基础 OllyDBG 入门系列(五)-消息断点及 RUN 跟踪

    这些记录对于分析程序的行为非常有用,尤其是当程序出现异常时,可以帮助我们快速定位问题所在。 #### 四、实战案例分析 为了更好地理解上述理论知识,我们可以通过一个具体的案例来进行实践。假设我们正在尝试...

    代码预览插件runCode.js

    当用户在网页上触发运行代码的事件(例如点击一个按钮),`runCode.js` 会捕获输入的代码,通过JavaScript的`eval()`函数或Web Worker等安全机制执行代码,然后将执行结果在预览区域内动态更新。同时,插件会处理...

    Deeplab v2 run_pascal.sh run_densecrf.sh

    在训练过程中,Deeplab v2可能会使用一种称为 atrous convolution(空洞卷积)的技术,它允许网络在不增加计算量的情况下捕获更大范围的上下文信息。此外,模型可能还采用了多尺度训练和推理策略,以提升对不同尺寸...

    RUN加减模块1.0.rar

    RUN加减模块可能会有对应的异常处理机制,如使用`try-except`结构,来捕获并处理这些潜在的错误。 5. **性能优化**:对于频繁执行的加减运算,模块可能会采用特定算法或数据结构来优化性能。例如,对于大规模数据的...

    一个简单的基于DirectShow的视频捕获程序

    - **运行过滤器图**:调用`IGraphBuilder::Run`启动捕获过程。 5. **Sample Grabber**: `Sample Grabber`是一个特殊的过滤器,允许开发者拦截和处理数据样本,非常适合视频捕获程序,因为它能提供实时的视频帧...

    C#全局异常

    "全局异常"是指在整个应用程序范围内设置的异常处理机制,可以捕获那些未被局部异常处理块捕获的异常。本教程将深入探讨如何在C#中实现全局异常处理,以及它对代码健壮性的重要性。 首先,让我们理解C#中的异常处理...

Global site tag (gtag.js) - Google Analytics