NPE in UiUtilities.showConfirmDialogOnMouseScreen()

Fehler in TV-Browser
Antworten
Anton_D

NPE in UiUtilities.showConfirmDialogOnMouseScreen()

Beitrag von Anton_D »

Wenn ich im Einrichtungsassistent im 2. Schritt die Maske wegen AndroidSync zu sehen bekomme, dann klicke ich die einfach durch Schließen des Fensters (Kreuz oben rechts) weg. Dann ist die Maske zwar weg, ich sehe aber im Log diese Exception:

java.lang.NullPointerException: Cannot invoke "java.lang.Integer.intValue()" because the return value of "javax.swing.JOptionPane.getValue()" is null
at tvbrowser/util.ui.UiUtilities.showConfirmDialogOnMouseScreen(UiUtilities.java:1564)
at tvbrowser/util.ui.UiUtilities.showConfirmDialogOnMouseScreen(UiUtilities.java:1502)
at tvbrowser/tvbrowser.ui.settings.ChannelsSettingsTab.askForSynchronization(ChannelsSettingsTab.java:544)
at tvbrowser/tvbrowser.ui.settings.ChannelsSettingsTab.lambda$createSettingsPanel$9(ChannelsSettingsTab.java:511)

Man kann in den Einstellungen auf Kanäle-Einstellungen gehen - es wird dasselbe geschehen.

In der Zeile 1564 wird einfach Boxing durchgeführt / gecastet, ohne auf null zu prüfen. Und wenn ich keinen Knopf drucke - dann ist dieser Wert genau null.

Ich habe nachgeschaut, wo diese Methode überall benutzt wird. Es sind ProtocolHandler und SelectFilterDlg, und dann durch showConfirmDialogOnMouseScreen() mit weniger Parameter noch 8 Mal im Settings, ProtocolHandler, ManageFavoritesPanel und ChannelsSettingsTab.
Überall wird das Ergebnis mit einer Konstante aus JOptionPane verglichen.

Ich würde meinen, man soll getValue() Wert zuerst auf null prüfen, und falls es null ist, dann irgendwelche Konstante wie CLOSED_OPTION benutzen.

Am Ende passiert ja das, was ich wollte - Maske ist weg, ich habe nichts gewählt; aber es soll doch keine Exception fliegen.
Antworten