我在 createPartControl()
方法中调用了 unmarshalling()
,并在 btnSave()
中调用了 marshalling()
方法,我想知道它会抛出什么异常?我在那里添加了 try, catch block 。我不确定我们是否可以添加抛出。请有人解释一下。
public void createPartControl(final Composite parent) {
try {
MarshallingUnmarshalling.unMarshaling();
} catch (Exception e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
}
parent.setLayout(new GridLayout(2, false));
associateViewer = new TreeViewer(parent, SWT.FULL_SELECTION);
associateViewer.addPostSelectionChangedListener(new ISelectionChangedListener() {
@Override
public void selectionChanged(SelectionChangedEvent event) {
if (imageText.getText().equals("")) {
final ImageLoader loaderNoImage = new ImageLoader();
loaderNoImage.load(getClass().getClassLoader().getResourceAsStream("icons/no.png"));
final Image noImage = new Image(Display.getCurrent(), loaderNoImage.data[0]);
labelImage.setImage(noImage);
} else {
labelImage.setImage(SWTResourceManager.getImage(imageText.getText()));
}
}
});
associateViewer.setSorter(new Sorter());
tree = associateViewer.getTree();
GridData gridTree = new GridData(SWT.CENTER, SWT.FILL, false, false, 1, 1);
gridTree.widthHint = 942;
gridTree.heightHint = 171;
tree.setLayoutData(gridTree);
tree.setHeaderVisible(true);
tree.setLinesVisible(true);
final TreeColumn newColumnTableColumn = new TreeColumn(tree, SWT.NONE);
newColumnTableColumn.setWidth(342);
newColumnTableColumn.setText("Name");
final TreeColumn newColumnTableColumn1 = new TreeColumn(tree, SWT.NONE);
newColumnTableColumn1.setWidth(372);
newColumnTableColumn1.setText("E-mail");
final TreeColumn newColumnTableColumn2 = new TreeColumn(tree, SWT.NONE);
newColumnTableColumn2.setWidth(252);
newColumnTableColumn2.setText("Phone");
labelImage = new Label(parent, SWT.BORDER);
GridData gLabelImage = new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1);
gLabelImage.heightHint = 695;
labelImage.setLayoutData(gLabelImage);
new Label(parent, SWT.NONE);
Label lblImageLocation = new Label(parent, SWT.NONE);
lblImageLocation.setText("Image Location");
final Composite detailComposite = new Composite(parent, SWT.BORDER);
GridData gDetailComposite = new GridData(SWT.LEFT, SWT.TOP, false, false, 1, 5);
gDetailComposite.widthHint = 963;
detailComposite.setLayoutData(gDetailComposite);
final GridLayout gridLayout2 = new GridLayout();
gridLayout2.numColumns = 2;
detailComposite.setLayout(gridLayout2);
final Label descriptionLabel = new Label(detailComposite, SWT.NONE);
descriptionLabel.setText("Description: ");
new Label(detailComposite, SWT.NONE);
final Label label = new Label(detailComposite, SWT.NONE);
label.setText("Name: ");
nameText = new Text(detailComposite, SWT.BORDER);
nameText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
final Label emailLabel = new Label(detailComposite, SWT.NONE);
emailLabel.setText("E-mail:");
emailText = new Text(detailComposite, SWT.BORDER);
emailText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
final Label phoneLabel = new Label(detailComposite, SWT.NONE);
phoneLabel.setText("Phone:");
phoneText = new Text(detailComposite, SWT.BORDER);
phoneText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
imageText = new Text(parent, SWT.BORDER);
GridData gImageText = new GridData(SWT.FILL, SWT.TOP, false, false, 1, 1);
gImageText.widthHint = 414;
imageText.setLayoutData(gImageText);
final Button btnBrowse = new Button(parent, SWT.NONE);
btnBrowse.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
FileDialog dlg = new FileDialog(parent.getShell(), SWT.OPEN);
String fileName = dlg.open();
if (fileName != null) {
imageText.setText(fileName);
labelImage.setImage(SWTResourceManager.getImage(imageText.getText()));
}
}
});
btnBrowse.setText("Browse");
GridData gBtnBrowse = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
gBtnBrowse.heightHint = 51;
gBtnBrowse.widthHint = 155;
btnBrowse.setLayoutData(gBtnBrowse);
final ImageLoader loaderBrowse = new ImageLoader();
loaderBrowse.load(getClass().getClassLoader().getResourceAsStream("icons/brw.png"));
final Image browseImage = new Image(Display.getCurrent(), loaderBrowse.data[0]);
btnBrowse.setImage(browseImage);
final Button btnSave = new Button(parent, SWT.NONE);
btnSave.addMouseMoveListener(new MouseMoveListener() {
@Override
public void mouseMove(MouseEvent e) {
btnSave.setText("Save ");
final ImageLoader loaderSaveImage = new ImageLoader();
loaderSaveImage.load(getClass().getClassLoader().getResourceAsStream("icons/clicktosave.png"));
final Image saveImage = new Image(Display.getCurrent(), loaderSaveImage.data[0]);
btnSave.setImage(saveImage);
}
});
GridData gBtnSave = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
gBtnSave.heightHint = 56;
gBtnSave.widthHint = 156;
btnSave.setLayoutData(gBtnSave);
btnSave.setText("Save ");
final ImageLoader loaderSaveImage = new ImageLoader();
loaderSaveImage.load(getClass().getClassLoader().getResourceAsStream("icons/clicktosave.png"));
final Image saveImage = new Image(Display.getCurrent(), loaderSaveImage.data[0]);
btnSave.setImage(saveImage);
new Label(parent, SWT.NONE);
new Label(parent, SWT.NONE);
btnSave.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
try {
MarshallingUnmarshalling.marshaling();
} catch (JAXBException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
final ImageLoader loaderSavedImage = new ImageLoader();
loaderSavedImage.load(getClass().getClassLoader().getResourceAsStream("icons/saved.png"));
final Image savedImage = new Image(Display.getCurrent(), loaderSavedImage.data[0]);
btnSave.setText("Saved");
btnSave.setImage(savedImage);
}
});
associateViewer.setContentProvider(new TreeContentProvider());
associateViewer.setLabelProvider(new TreeLabelProvider());
associateViewer.setInput(Engineer);
Binding.initDataBindings();
}
@Override
public void setFocus() {
}
}
最佳答案
像这样的事情会做:
@Override
public void widgetSelected(SelectionEvent e) {
try {
MarshallingUnmarshalling.marshaling();
// or MarshallingUnmarshalling.unMarshaling();
} catch (JAXBException e) {
showError(e);
}
}
private void showError(Exception e) {
final Text text = new Text(composite, SWT.MULTI | SWT.BORDER | SWT.V_SCROLL);
text.setText("An error occurred!");
text.setLayoutData(new GridData(GridData.FILL_BOTH));
Status status = new Status(IStatus.ERROR, "Plug-in ID", 0,
"Status Error Message", e);
ErrorDialog.openError(Display.getCurrent().getActiveShell(),
"Error!", text.getText(), status);
}
因此,基本上您可以创建方便的方法来显示错误,然后在(编码和解码)catch block 中使用它。
关于java - JAXB异常处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41951051/