文章来源:csdn 作者:enoeht
在我们的程序中并不是所有的异常都被捕获,有些是因为我们不想捕获,因为我们认为那些异常没必要捕获
而有些是我们无法捕获的,因为我们不能确定它们会在什么地方出现,例如像NullPointerException,ClassCastException,IndexOutOfBoundsException这些RuntimeException。我们也许可以在所有它们有可能发生的地方去捕获它们,但这确实是很坏的解决方案。但在有些情况下,我们又必须在一些未捕获的异常发生时做一些事情,像释放资源、让程序离开错误状态等等。
这里通过ThreadGroup提供的一个方法,解决了这个问题,让我们的程序可以变得更健壮。ThreadGroup提供一个uncaughtException回调方法,当线程组中的线程有未被捕获的异常发生时,JVM就会去调用这个方法。
|
public class ApplicationLoader extends ThreadGroup {
private ApplicationLoader() {
super("ApplicationLoader");
}
public static void main(String args[]) {
Runnable addStarter = new Runnable() {
public void run() {
//在这里调用我们自己的程序的入口函数
//MyApplication.main(args);
}
};
//把我们自己的程序当作这个线程组的一个线程来运行
new Thread(new ApplicationLoader(), addStarter).start();
}
|
/*当有未被捕获的异常发生导致线程停止时,这个方法就会被虚拟机调用,我们只要在自己的ThreadGroup子类中override这个方法,在其中对异常进行相应的处理*/
|
public void uncaughtException(Thread threadf, Throwable e) {
//Handle the Exception
}
}
|
分享到:
相关推荐
Java经验点滴处理没有被捕获的异常.rar
通过使用`try-catch`语句,开发者可以捕获并处理这些异常,保证程序的稳定性。 8. **资源管理**:为了提高性能和避免内存泄漏,开发者需要正确地关闭打开的文件流和释放音频资源。Java的`finally`块常用于确保资源...
学习如何使用try-catch-finally语句块捕获和处理异常,以及如何自定义异常,能够提高代码的健壮性。文档可能提到了在实际编程中如何有效运用异常处理机制的实例。 容器和集合框架是Java中强大的工具,包括数组、...
Java使用try-catch-finally语句块来捕获和处理运行时错误,确保程序的健壮性。此外,finally块可以确保无论是否发生异常,某些代码都能被执行,如资源的关闭。 多线程是Java的一个强大特性,允许程序同时执行多个...
良好的编程实践要求我们对这些可能的异常进行捕获和处理,确保程序的稳定性和用户体验。 7. **多线程**:虽然简单的记事本程序可能并不复杂到需要多线程,但如果考虑到性能优化,比如在执行大文件读写时,可以使用...
最后,考虑到软件的稳定性和异常处理,Java的异常处理机制被充分利用。try-catch-finally结构用于捕获和处理可能出现的错误,确保程序在遇到问题时能够优雅地终止,而不是突然崩溃。 总的来说,“NotebookSys.rar”...
6. **错误处理**:考虑到可能出现的异常情况,如文件不存在、读写权限问题等,程序需要有适当的错误处理机制,如try-catch语句块,来捕获并提示用户错误信息。 7. **数据结构与文件组织**:日记可能以单独的文件...
3. 错误处理:捕获并处理可能出现的异常,如文件过大、网络中断等,提供友好的错误提示。 4. 用户体验:提供进度条显示、取消上传等功能,提升用户体验。 5. 文件命名:为了避免文件名冲突,通常需要对上传的文件...
5. 错误处理:在转换过程中,JsonUtil通常会捕获并处理可能出现的异常,如`JsonParseException`、`JsonMappingException`等,以确保程序的健壮性。 总结来说,JsonUtil工具类是Java开发中的利器,它简化了JSON与...
代码中可能会包含异常捕获和处理机制,以确保程序的稳定运行。 通过学习这段代码,你可以掌握如何构建一个类似微信朋友圈的消息系统,了解如何处理数据、创建用户界面、实现交互功能,并且了解良好的编程习惯。这...
3. **异常处理**:如何使用try-catch-finally结构来捕获和处理程序运行时可能出现的错误。 4. **集合框架**:ArrayList、LinkedList、HashSet、HashMap等常用集合类的使用,以及它们之间的区别和应用场景。 5. **...
7. **错误处理与日志记录**:为了调试和优化,开发者需要对可能出现的异常情况进行捕获,并记录日志,以便追踪和解决问题。 8. **版本控制**:为了团队协作和代码管理,开发者通常使用Git进行版本控制,确保代码的...
6. **异常处理**:如果在服务端抛出异常,客户端会收到一个`RemoteException`。因此,服务端应该在方法中捕获可能的异常,并返回一个适当的错误码。 ### 实战演练 在`aidldemo`项目中,你可以看到一个简单的AIDL...