How to find a (informative) stack trace of an unknown exception generated by Swing components

I have an application installed UncaughtExceptionHandlerin my Swing application that will catch and write down any uncaught exceptions in my code and report it to me. Stack tracing for most of these errors helps diagnose problems. However, sometimes this problem occurs:

Thread : AWT-EventQueue-2
   Thread[AWT-EventQueue-2,6,javawsApplicationThreadGroup]

Error Message:
java.lang.Double cannot be cast to java.lang.Integer

Error String:
java.lang.ClassCastException: java.lang.Double cannot be cast to java.lang.Integer

StackTrace: class java.lang.ClassCastException
   java.lang.Integer.compareTo(Unknown Source)
   javax.swing.table.TableRowSorter$ComparableComparator.compare(Unknown Source)
   javax.swing.DefaultRowSorter.compare(Unknown Source)
   javax.swing.DefaultRowSorter.access$100(Unknown Source)
   javax.swing.DefaultRowSorter$Row.compareTo(Unknown Source)
   javax.swing.DefaultRowSorter$Row.compareTo(Unknown Source)
   java.util.ComparableTimSort.binarySort(Unknown Source)
   java.util.ComparableTimSort.sort(Unknown Source)
   java.util.Arrays.sort(Unknown Source)
   javax.swing.DefaultRowSorter.sortExistingData(Unknown Source)
   javax.swing.DefaultRowSorter.setSortKeys(Unknown Source)
   javax.swing.DefaultRowSorter.toggleSortOrder(Unknown Source)
   javax.swing.plaf.basic.BasicTableHeaderUI$MouseInputHandler.mouseClicked(Unknown Source)
   java.awt.AWTEventMulticaster.mouseClicked(Unknown Source)
   java.awt.Component.processMouseEvent(Unknown Source)
   javax.swing.JComponent.processMouseEvent(Unknown Source)
   java.awt.Component.processEvent(Unknown Source)
   java.awt.Container.processEvent(Unknown Source)
   java.awt.Component.dispatchEventImpl(Unknown Source)
   java.awt.Container.dispatchEventImpl(Unknown Source)
   java.awt.Component.dispatchEvent(Unknown Source)
   java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
   java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
   java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
   java.awt.Container.dispatchEventImpl(Unknown Source)
   java.awt.Window.dispatchEventImpl(Unknown Source)
   java.awt.Component.dispatchEvent(Unknown Source)
   java.awt.EventQueue.dispatchEventImpl(Unknown Source)
   java.awt.EventQueue.access$500(Unknown Source)
   java.awt.EventQueue$3.run(Unknown Source)
   java.awt.EventQueue$3.run(Unknown Source)
   java.security.AccessController.doPrivileged(Native Method)
   java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
   java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
   java.awt.EventQueue$4.run(Unknown Source)
   java.awt.EventQueue$4.run(Unknown Source)
   java.security.AccessController.doPrivileged(Native Method)
   java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
   java.awt.EventQueue.dispatchEvent(Unknown Source)
   java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
   java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
   java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
   java.awt.EventDispatchThread.pumpEvents(Unknown Source)
   java.awt.EventDispatchThread.pumpEvents(Unknown Source)
   java.awt.EventDispatchThread.run(Unknown Source)

, ( JTable - , : Double s, Integer s). , JTable ( ). , , .

, , , ?

. , " ", , , , . , , , .

+4
1

- . , , DefaultRowSorter.setSortKeys,

public class MyRowSorter<M, I> extends DefaultRowSorter<M, I> {
    ....

    @Override
    public void setSortKeys(List<? extends SortKey> sortKeys) {
        try {
            super.setSortKeys(sortKeys);
        } catch (Exception e) {
            //   
            // print debugging info here!
            //
            throw e;
        }
    }
}

MyRowSorter , MyRowSorter, , .

+1

Source: https://habr.com/ru/post/1598752/


All Articles