Eclipse StatusManager不显示详细信息

Cai*_*der 5 eclipse eclipse-rcp

码:

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; 
            } 
        }; 
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

当用户单击"详细信息"按钮时,如何使其显示异常的堆栈跟踪?

Mar*_*rik 6

状态对话框的默认详细信息区域显示异常堆栈跟踪.

如果您有自己的Eclipse 产品,那么可以使用org.eclipse.ui.statusHandlers扩展点自定义状态对话框的详细信息和支持区域.您将需要扩展WorkbenchErrorHandler和覆盖configureStatusDialog(...)方法:

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
    }
}
Run Code Online (Sandbox Code Playgroud)



异常传递Status,而不是null你做供错误日志查看详细信息对话框中的堆栈跟踪.