1
看起來,在拖放JavaFX中的監聽器時,會無意中吞下異常。我已經搜索過,並且在文檔中找不到任何提及。在拖動監聽器中引發JavaFX靜默吞嚥異常
我重新此之下...
反正是有防止這種情況,揭露例外?
public class App extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) throws Exception {
Button source = new Button("source");
Button destination = new Button("destination");
HBox box = new HBox(source, destination);
source.setOnDragDetected(event -> {
Dragboard db = source.startDragAndDrop(TransferMode.ANY);
ClipboardContent content = new ClipboardContent();
content.putString("foo");
db.setContent(content);
event.consume();
});
destination.setOnDragOver(new EventHandler<DragEvent>() {
public void handle(DragEvent event) {
event.acceptTransferModes(TransferMode.LINK);
String nullReference = null;
nullReference.toCharArray(); // cause an exception
event.consume();
}
});
primaryStage.setScene(new Scene(box));
primaryStage.show();
}
}
在從James_D和進一步的調查反饋,我們已經發現了這個由平臺
- Ubuntu Linux操作系統的不同而不同。 1.8.0_40 =>例外看到
- Mac OS X的1.8.0_40 =>例外看到
- Windows 7的1.8.0_40 =>沒有例外
- Windows 7的1.8.0_121 =>無異常(最新的JDK在撰寫本文時)
如果我運行它,並拖動到'目標',我看到在我的控制檯中有很多美麗的堆棧跟蹤.... –
我使用JDK 1.8.0_121在Mac OS X上進行了測試。 –
我剛剛在Ubuntu 16.04/1.8.0_40上試過......我得到了痕跡......看起來他們根源於不同的課程......「\t at com.sun.glass.ui.gtk.GtkApplication。 _runLoop(本機方法)「...必須是吞嚥Windows實施,但不是Linux/OS X ... – Adam