我正在与javax.swing
一个应用程序一起工作,该应用程序从XML
Schema生成表单(使用JAXFront库),并将用户填写的数据存储到XML文档中。
我在需要时放置了try-catch-finally块,但是在主线程结束时(AWT线程仍在运行)捕获异常时我有一个小问题。
我有两个班级负责主要工作,其他班级对这个问题并不重要:
主类 :具有以下结构。初始化应用程序并运行主机
public class Main {
public static void main(String[] args) {
readArgs(); // An INI file with the app config
Model model = initializeElements(args); // My model class
try {
MyFrame mfr = new MyFrame(title,model);
mfr.visualize(); // Assembling view and setting visible
} catch( Excepion e ) {
doCleanUp();
System.exit(-1);
}
}
}
框架类 :生成视图和监听事件
public class MyFrame extends JFrame implements ActionListener,MenuListener {
// Some attributes
// Other mthods without importance
/**
* Compose the elements, add listeners and set visible the frame
*/
public void visualize() {
generateFormPanel();
setListeners();
validate();
setVisible(true);
}
public MyFrame(String title, Modele model) {
super(title);
createElementsUsing(model);
}
public void actionPerformed(ActionEvent e) {
// Code to manage events
}
}
好了,问题就出在下面:从主要方法中提取可视化功能时,将生成并显示视图。那时候我失去了对异常捕获的控制。然后我的问题是,是否
有某种方法可以捕获在此之后引发的可能的RuntimeException 。
希望您能理解我的英语,并能回答这个问题。
提前致谢。
最简单的版本是设置默认的未捕获异常处理程序:
Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
public void uncaughtException(Thread t, Throwable e) {
// do something
}
});
但这也捕获了程序其他部分抛出的未捕获异常。
但是,您可以使用代理仅捕获从swing事件调度线程抛出的运行时异常(有关更多信息,请参见此页,从那里复制代码):
class EventQueueProxy extends EventQueue {
protected void dispatchEvent(AWTEvent newEvent) {
try {
super.dispatchEvent(newEvent);
} catch (Throwable t) {
// do something more useful than: t.printStackTrace();
}
}
}
现在像这样安装它:
Toolkit.getDefaultToolkit().getSystemEventQueue().push(new EventQueueProxy());
我在运行python flask web应用程序时得到了这个回溯(最近一次调用是最后一次)。 从烧瓶导入烧瓶app=烧瓶(名称) @app.route ("/") def你好():返回" 我正在终端上运行服务器:“cd Flask\u Blog”,“export Flask\u DEBUG=1” 我也尝试初始化烧瓶模块分配"flask.init()"代码,但我仍然得到错误的网页浏览器! 我做错什么
我想使用sentry跟踪spring boot应用程序的异常。Sentry不会自动捕获异常。但是当我使用
我有一些下面这样的代理代码。问题是,每当目标服务器停机时,此代码都无法捕获错误,导致整个应用程序崩溃,出现。 对于代理服务器来说,这很糟糕,它只需要向调用者返回一个错误,而不是在第一次无法访问目标服务器时完全崩溃。 现在什么是正确的方法? 节点版本6。 谢谢!
问题内容: 如何捕捉到不同的信号,如和斯威夫特是否正确?例如,当人们通过按- 停止我的脚本时,我想在终止脚本之前进行一些清理。 问题答案: 调度源 可用于监视UNIX信号。 这是一个简单的示例,《 并发编程指南 》中“监视信号”部分中C代码的Swift 3转换 。 请注意,这需要一个活动的GCD事件循环,例如 在命令行程序中。
问题内容: 如果我没记错的话,应该首先捕获Exception的子类。但是必须捕获任何RuntimeException和一个具体的经过检查的Exception,首先应该捕获它们吗? 这个命令正确吗?还是正确但错误的选择? 问题答案: 顺序是 先匹配的,然后执行 (正如JLS清楚地解释的)。 如果第一个catch匹配到异常,则执行,否则,将尝试下一个,并不断重复直到匹配或不匹配。 因此,在捕获异常时,
每当我的VNC连接被终止时(每当我重新启动VM时),我都试图捕捉一个异常,并且我试图忽略它以继续我的Jython脚本。我不知道如何编写try catch语句来捕获异常,因为它起源于Java。这是一个sikuliX脚本。