【问题标题】:Try Catch Block With Input Dialog尝试使用输入对话框捕获块
【发布时间】:2011-11-19 02:52:50
【问题描述】:

有没有办法让这段代码工作?我遇到的唯一问题是,当用户单击取消时,会显示消息对话框。

public static void main(String[] args) {
    try {
        JOptionPane.showInputDialog("Enter something")
    } catch (Exception error) {
        JOptionPane.showMessageDialog("Something went wrong.");
    }
}

【问题讨论】:

  • 也许你应该检查异常的类型。
  • 该代码示例“工作”意味着什么?
  • 这段代码有很多错误,这很好地证明了它不是你的真实代码。为什么不向我们展示实际代码,以便我们看到实际问题?您也可以简单地将 error.printStackTrace(); 放入您的 catch 块中,看看“某物”实际上是什么。
  • 这只是一个示例。我使用“error.getCause();”时的实际原因为空。我只需要一种在用户选择取消时忽略 try catch 块的方法。 @Sarnold:“工作”是指让 try catch 块忽略取消选择
  • “这只是一个样本。” 样本是垃圾,是噪音。 -1

标签: java input dialog try-catch


【解决方案1】:

我修复了你的代码,所以它可以编译:

import javax.swing.JOptionPane;

public class Example {
public static void main(String[] args) {

    try {
        JOptionPane.showInputDialog("Enter something");
    } catch (Exception error) {
        error.printStackTrace();
        JOptionPane.showMessageDialog(null, "Something went wrong.");
    }
}

}

无论我点击“取消”还是“确定”,它在运行时都能正常工作。不抛出异常。

我怀疑您的实际代码除了您发布的内容之外还有其他内容。

【讨论】:

    【解决方案2】:
    import javax.swing.*;
    
    class GetInput {
    
        public static void getInput() {
            String result = JOptionPane.showInputDialog(null, "Enter something");
            if (result==null) {
                System.out.println("User cancelled action.");
            } else {
                System.out.println("User entered '" + result + "'.");
            }
        }
    
        public static void main (String[] args) {
            SwingUtilities.invokeLater(new Runnable() {
                public void run() {
                    getInput();
                    getInput();
                }
            });
        }
    }
    

    典型输出

    User entered 'this code runs!'.
    User cancelled action.
    Press any key to continue . . .
    

    【讨论】:

    • 它比我希望的要大一点,但它仍然有效!非常感谢。
    • “它比我希望的要大一点” 代码在 22 行中执行了两次。每次调用平均只有 11 个 LOC。 ;)
    【解决方案3】:

    当他们按下取消时,你会得到一个空值。我怀疑你得到了一个被抓住的 NPE。检查返回值是否为 null。

    【讨论】:

    • Andrew Thompson 刚刚在上面发布了一些代码,这就是你所说的。谢谢你的建议。
    【解决方案4】:
    try{
        //some code ;)                 
    } catch(Exception e) {
        System.out.println(e.getMessage());
        JOptionPane.showMessageDialog(this, " erreur !!! :" + e.getMessage());   
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-23
      • 1970-01-01
      • 2017-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多