无法读取try catch中的变量

时间:2013-01-22 13:50:08

标签: java variables try-catch

String selectedDate = "2012-" + createdMonth
        + "-" + createdDay;

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-mm-dd");

try {
    Date createdDate = dateFormat.parse(selectedDate);
} catch (ParseException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
}

int x = JOptionPane.showOptionDialog(frame,
    "Here is your new booking schedule:\n "
        + "Timeslot: "
        + selectedTimeslot + "\n"
        + "Date: " + createdDate + "\n"
        + "Continue?",
    "Booking Confirmation",
    JOptionPane.YES_NO_OPTION,
    JOptionPane.QUESTION_MESSAGE, null,
    options, options[1]);

问题是JOptionPane中的createdDate无法解析为变量。这是为什么?我已经尝试过所有的东西,比如在try catch之外初始化Date对象,但它仍然不起作用。救命啊!

4 个答案:

答案 0 :(得分:5)

因为一旦try块完成,变量就超出了范围。将jOptionPane代码移动到try块内部或将createDate声明移到try块之外。

答案 1 :(得分:1)

您在try-catch块中定义变量,这是它自己的范围。在try块之外,变量超出范围'因此'不存在'在稍后的时间点。

答案 2 :(得分:0)

变量的范围在try {}内,因为它是声明它的位置。你可以这样做:

Date createDate;
try
{
    createDate = dateFormat.parse(selectedDate);
}
....

答案 3 :(得分:0)

您已在try的范围内声明了该变量。您使用了“Date createdDate = ....”这意味着一旦超出try {..}的范围,它将不再存在。请确保将其声明为超出了try的范围,看看是否有效!