java - JAXB异常处理

标签 java exception jaxb

我在 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/

相关文章:

java - 当引用的方法抛出异常时,如何以一个方法作为参数调用另一个方法?

java - (Spring Data MongoDB)多对多关系场景

android - 互联网连接错误

java - ClassNotFoundException com.mysql.jdbc.Driver

Java xml-java 绑定(bind) @XmlType.propOrder

java - 泛型XmlAdapter可以写吗

java - 如何在 Maven src/test 中为 XSD 生成类,在 src/main 中引用 XSD

java - 迭代枚举的枚举

java - 在 CMU Sphinx (pocketsphinx) 中使用 JSGF 语法代替 DMP 语言模型(使用 -jsgf 代替 -lm)

java - Java 循环中的用户输入和求和问题