Tag: exception处理

JavaFX 2 – 捕获所有运行时exception

我试过了 Thread.setDefaultUncaughtExceptionHandler… 在main中,也在start(Stage primaryStage)方法中。 它不起作用。 我也试过了 public static void main(String[] args) { try { launch(args); }catch(Throwable t) { System.out.println(t.getMessage); } } exception堆栈跟踪。 at javafx.concurrent.Task $ TaskCallable $ 2.run(Task.java:1251)at com.sun.javafx.application.PlatformImpl $ 3.run(PlatformImpl.java:141)at com.sun.glass.ui.gtk.GtkApplication ._runLoop(Native Method)at com.sun.glass.ui.gtk.GtkApplication $ 1 $ 1.run(GtkApplication.java:56)at java.lang.Thread.run(Thread.java:662) 谢谢你的帮助。

Java未捕获全局exception处理程序

我有一个应用程序,需要编写自定义全局未捕获exception处理程序。 我已经阅读了所有的stackoverflow线程,并且每个线程都缺少一个如何实现它的简单明了的例子。 请考虑以下简单示例: public static void log(String msg) throws Exception { String logPath = “/application/logs/java.log”; Calendar c = new GregorianCalendar(); SimpleDateFormat format = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”); String now = format.format(c.getTime()); PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter(logPath, true))); out.println(now + ” ” + msg); out.close(); } 它抛出一个标准exception,它只是一个标准输出。 我如何实现我自己的exception,通过将错误输出到日志文件中的简单方法覆盖标准exception? 显然,实际的应用程序要大得多,我们正在谈论未捕获的exception,这就是为什么try / catch块不是选项。 更新:如果你能用一个非常明确的完整例子来回答,因为我发现了几个像@RamonBoza提供的例子,但我不知道如何实现它们,这就是这个问题的全部内容。 更新2:所以我试着在下面的答案中测试唯一的例子,它显然不起作用。 我创建了一个新的类文件“MyRunnable”并将代码粘贴到其中: package […]

如果捕获空指针exception不是一个好习惯,捕获exception是一个好的吗?

我听说捕获NullPointerException是一种不好的做法,我认为这是明智的。 让NullPointerException传播到顶部将允许检测出错的东西。 但很多时候我看到很多朋友直接捕获Exception ,因此他们不必担心上面代码中可能出现的所有不同类型的exception。 这是一个好习惯吗? 什么是最好的未处理的其他类型的例外? 除此之外,我还可以在特定代码上处理NullPointerException ,我们确定exception的来源。 那么何时处理exception以及什么时候不应该处理它们? 什么是可能的最好的例外列表,最好不做处理?

什么时候可以对业务逻辑使用exception处理?

我认为可以接受的是,作为Java中的一般规则(也许是任何具有exception处理的语言),应该尽量避免使用exception处理来实际处理业务逻辑。 一般来说,如果预计会发生某种情况,那么应该检查它并直接处理它,而不是依赖于exception处理来为您进行检查。 例如,以下不被视为良好做法: try{ _map.put(myKey, myValue); } catch(NullPointerException e){ _map = new HashMap(); } 相反,延迟初始化应该更像这样: if(_map == null){ _map = new HashMap(); } _map.put(myKey, myValue); 当然,可能存在比简单处理延迟初始化更复杂的逻辑。 因此,鉴于此类事情通常不受欢迎……如果有的话,依赖于某些业务逻辑发生的exception是一个好主意吗? 是否准确地说任何一个人感到被迫使用这种方法的实例是否真的突出了所使用的API的弱点?

链式exception的优点是什么?

我不明白在代码中使用链式exception的优点。 考虑来自java世界的ResourceLoader示例 ,如果程序员知道遇到ResourceLoadException的可能性,为什么不捕获相同的exception而不是SQLException呢? 另外,程序员可以捕获同一代码中的exception,而不是抛出一个新的Throwable实例?

为什么订单在捕获exception时很重要?

我不得不用一些代码回答这个问题: 假设我编写了以下方法规范: public void manipulateData ( ) throws java.sql.SQLException, java.sql.SQLDataException 您正在为将使用此方法的数据库程序编写代码,并且您希望专门处理每个代码。 try / catch子句应该是什么样的? 您可以使用no-ops– empty blocks {} – 用于catch子句内容。 我们只对这里的语句的语法和结构感兴趣。 我回答说: try { } catch(java.sql.SQLException e) { } catch(java.sql.SQLDataException e) { } 由于这个原因,他不接受答案: “你的捕获条款的顺序是错误的。你能解释为什么这个命令很重要吗?” 他的回答是否正确?

线程“main”中的exceptionjava.io.FileNotFoundException:错误

我正在使用Eclipse来编译和运行我的java代码。 这是我得到的错误。 Exception in thread “main” java.io.FileNotFoundException: file.txt (The system cannot find the file specified) at java.io.FileInputStream.open(Native Method) at java.io.FileInputStream.(Unknown Source) at java.util.Scanner.(Unknown Source) at helloworld.main(helloworld.java:9) 这是我的代码 import java.io.File; import java.io.IOException; import java.util.Scanner; public class helloworld { public static void main(String[] args) throws IOException { Scanner KB = new Scanner(new File(“file.txt”)); while (KB.hasNext()) { String […]

javafx,从另一个线程更新ui

我有一个javafx应用程序,以及一个通过javafx.concurrent.Task实现的工作线程,它执行一个漫长的过程,即压缩和上传一组文件。 我已经通过progressProperty将任务进度连接到进度条。 除此之外,我想要一个关于正在处理的项目的详细状态,以便报告给ui。 也就是说,正在处理的文件的名称及其大小以及单个文件进程可能产生的任何错误。 使用这些信息更新UI无法从工作线程完成,最多可以将其添加到同步集合中。 但后来我需要一些事件来通知UI新数据可用。 javafx是否对此问题有一些特定的支持? 更新,更好的配方 我没有将特设的跨线程机制设计为Platform.runLater,而是试图允许从其他线程中侦听每个属性。 就像Task提供的runningProperty和stateProperty一样

为什么我的节目“必须被抓或被宣布被抛出”?

我已经在这个项目上工作了很长一段时间,而且我的大脑都被炒了。 我可以使用一些人的帮助。 我正在尝试创建一个逐行读取文本文件的程序,每行都被创建为一个ArrayList因此我可以访问每个令牌。 我究竟做错了什么? import java.util.*; import java.util.ArrayList; import java.io.*; import java.rmi.server.UID; import java.util.concurrent.atomic.AtomicInteger; public class PCB { public void read (String [] args) { BufferedReader inputStream = null; try { inputStream = new BufferedReader(new FileReader(“processes1.txt”)); String l; while ((l = inputStream.readLine()) != null) { write(l); } } finally { if (inputStream != null) { […]

在Java中,如何使用JUnitvalidation抛出的exception?

在为Java API编写unit testing时,可能会出现需要对exception执行更详细validation的情况。 比JUnit提供的@test注释提供的更多。 例如,考虑一个应该从其他接口捕获exception的类,包装该exception并抛出包装的exception。 您可能需要validation: 抛出包装exception的确切方法调用。 包装器exception将原始exception作为其原因。 包装器exception的消息。 这里的要点是,您希望在unit testing中对exception进行额外的validation(而不是关于是否应该validationexception消息等事项的争论)。 对此有什么好的方法?