2012-03-13 10 views
5

Código:Eclipse StatusManager no muestran detalles

Job job = new Job("Connect to Database") { 
      @Override 
      protected IStatus run(IProgressMonitor monitor) { 
       // 即使是在正常的情况下,某些版本的DB2的连接建立时间也比较长。。。 
       monitor.beginTask("正在建立到数据库的连接 ...", 100); 
       try { 
        Thread.sleep(3000); 
        database = new Database(cp.getName(), cp.getConnection()); 
       } catch (Exception e) { 
        e.printStackTrace(); 
        IStatus sqlErrorStatus = new Status(IStatus.ERROR, "amarsoft.dbmp", e.getMessage(), null); 
        StatusManager.getManager().handle(sqlErrorStatus, StatusManager.SHOW); 
       } 
       monitor.done(); 
       return Status.OK_STATUS; 
      } 
     }; 

enter image description here

¿Cómo puedo hacer que se vea seguimiento de la pila de la excepción cuando el usuario haga clic en el botón 'Detalles'?

Respuesta

6

El área predeterminada de detalles del cuadro de diálogo de estado no muestra el seguimiento de la pila de excepciones.

Si usted tiene su propio Eclipse product entonces se puede personalizar detalles y áreas de apoyo del diálogo de estado usando org.eclipse.ui.statusHandlers punto de extensión. Va a necesitar extender WorkbenchErrorHandler y anular configureStatusDialog(...) método:

void configureStatusDialog(WorkbenchStatusDialogManager statusDialog) { 
    statusDialog.enableDefaultSupportArea(true); 
    statusDialog.setDetailsAreaProvider(new CustomStatusAreaProvider()); 
} 

class CustomStatusAreaProvider extends AbstractStatusAreaProvider { 
    Control createSupportArea(Composite parent, StatusAdapter statusAdapter) { 
     //Create and return details area 
    } 
} 



Por pasar la excepción a Status en lugar de null hacer el seguimiento de pila disponible para datos de diálogo de error de vista de registro .

+0

no funciona. solo muestra el mensaje (la cadena devuelta por # exception.getMessage) dos veces en el área de detalles. – CaiNiaoCoder

+0

@CaiNiaoCoder ¡Tiene razón, debería haberlo comprobado primero! Actualizado mi respuesta. –

Cuestiones relacionadas