在java中设置日期值时,try-catch有什么用途?
我是一名java新手,正在学习一些培训材料,这是其中一个问题 给定有效的DateFormat对象df,以及在java中设置日期值时,try-catch有什么用途?,java,try-catch,date-format,Java,Try Catch,Date Format,我是一名java新手,正在学习一些培训材料,这是其中一个问题 给定有效的DateFormat对象df,以及 Date d = new Date(0L); String ds = "December 12, 2012"; //Insert correct code here 用ds表示的日期更新d的值是什么 A. d = df.parse(ds); B. d = df.getDate(ds); C. try{ d = df.parse(ds); } catch
Date d = new Date(0L);
String ds = "December 12, 2012";
//Insert correct code here
用ds表示的日期更新d的值是什么
A. d = df.parse(ds);
B. d = df.getDate(ds);
C. try{
d = df.parse(ds);
}
catch(ParseException e){ };
正确答案是C。为什么会这样?A和C之间的区别是什么?因为可以抛出A,并且它是一个已检查的异常。调用代码必须使用try catch
块处理选中的异常,或者您的代码必须声明它可以使用throws子句抛出异常
检查异常是Java设计者认为程序绝对必须以某种方式提供的异常。每当编写可能引发已检查异常的语句时,程序必须执行以下两项操作之一:
try{
d = df.parse(ds);
}
catch(ParseException e){
e.printStackTrace();
// log the exception
throw new RuntimeException(e);
}
.因为可以抛出一个,并且它是一个已检查的异常。调用代码必须使用try catch
块处理选中的异常,或者您的代码必须声明它可以使用throws子句抛出异常
检查异常是Java设计者认为程序绝对必须以某种方式提供的异常。每当编写可能引发已检查异常的语句时,程序必须执行以下两项操作之一:
try{
d = df.parse(ds);
}
catch(ParseException e){
e.printStackTrace();
// log the exception
throw new RuntimeException(e);
}
.该方法抛出一个已检查的异常(它不是运行时异常),因此必须捕获它,否则它是编译器错误。该方法抛出一个已检查的异常(它不是运行时异常),因此必须捕获它,否则它是编译器错误。如果有问题的代码发现自己:
在不声明选中的ParseException
的方法中,以及
在任何能抓住它的try-catch块之外
然后A将给出一个编译器错误:未捕获异常ParseException:必须被捕获或声明为抛出
但是,如果您将//在此处插入正确的代码
替换为C下的代码,然后尝试实际读取变量d
,则会出现错误局部变量可能尚未初始化
更不用说空的catch块,还有后面有趣的分号
总之,这是一个非常糟糕的材料,您必须使用。如果有问题的代码发现自己:
在不声明选中的ParseException
的方法中,以及
在任何能抓住它的try-catch块之外
然后A将给出一个编译器错误:未捕获异常ParseException:必须被捕获或声明为抛出
但是,如果您将//在此处插入正确的代码
替换为C下的代码,然后尝试实际读取变量d
,则会出现错误局部变量可能尚未初始化
更不用说空的catch块,还有后面有趣的分号
总之,这是一种非常糟糕的材料,你必须使用它。
import java.util.Scanner;
导入java.util.Date;
导入java.text.ParseException;
导入java.text.simpleDataFormat;
公共班机
{
公共静态最终字符串格式=“dd/MM/yyyy”;
公共静态void main(字符串[]args)
{
扫描仪sc=新的扫描仪(System.in);
字符串date_input=sc.nextLine();
日期d1;
尝试
{
d1=转换字符串日期(日期输入);
System.out.println(日期输入+“是有效日期”);
}
捕获(解析异常)
{
System.out.println(日期输入+“不是有效日期”);
}
}
公共静态日期转换器StringToDate(字符串str)引发ParseException
{
SimpleDataFormat df=新的SimpleDataFormat(格式);
df.setLenient(假);
日期d=df.parse(str);
返回d;
}
}
import java.util.Scanner;
导入java.util.Date;
导入java.text.ParseException;
导入java.text.simpleDataFormat;
公共班机
{
公共静态最终字符串格式=“dd/MM/yyyy”;
公共静态void main(字符串[]args)
{
扫描仪sc=新的扫描仪(System.in);
字符串date_input=sc.nextLine();
日期d1;
尝试
{
d1=转换字符串日期(日期输入);
System.out.println(日期输入+“是有效日期”);
}
捕获(解析异常)
{
System.out.println(日期输入+“不是有效日期”);
}
}
公共静态日期转换器StringToDate(字符串str)引发ParseException
{
SimpleDataFormat df=新的SimpleDataFormat(格式);
df.setLenient(假);
日期d=df.parse(str);
返回d;
}
}
使用其他培训材料。必须不惜一切代价避免某些标记正确答案的东西,包括吞咽异常。@JBNizet最后你抓住分号了吗?我的意思是,真的:)@JBNizet:我会的,但这是一个最可能包含OCJP ex问题的问题