Eclipse StatusManager do not show detail

柔情痞子 提交于 2019-12-22 06:47:04

问题


Code:

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; 
            } 
        }; 

How can I make it display the exception's stack trace when user click the 'Details' button?


回答1:


Default details area of status dialog does not display exception stack trace.

If you have your own Eclipse product then you can customize details and support areas of the status dialog using org.eclipse.ui.statusHandlers extension point. You will need to extend WorkbenchErrorHandler and override configureStatusDialog(...) method:

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
    }
}



By passing the exception to Status instead of null you make the stack trace available for details dialog of error log view.



来源:https://stackoverflow.com/questions/9683989/eclipse-statusmanager-do-not-show-detail

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!