异常处理机制
exception 类
java异常结构中定义有Throwable类,有两个直接已知子类error和Exception,
error 表示为java运行出现问题
exception 表示用户操作导致的问题
异常处理的目的:当一场发生时能稳妥的终止程序,避免严重后果,具体的操作通常包括通知,恢复,退出
try ... catch语句
对一段代码产生的异常对象进行捕获,如捕获到则执行catch中的语句,不补货则会跳过catch不执行
getMessage()方法,用来得到异常对象的信息
printStackTrace 用来跟踪异常事件发生时执行堆栈的内容,系统默认这个
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String str = in.nextLine();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date;
try {
date = sdf.parse(str);
System.out.println(date);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
throw语句
可以使用throw来自行抛出异常 如:throw ArithmeticException();
public static void main(String[] args) {
double dbzero = 0.0;
System.out.println("浮点数除以0"+ (100/dbzero));
try {
if(dbzero == 0)
throw new ArithmeticException();
}catch(ArithmeticException e) {
System.out.println("除0异常");
}
}
throws语句
程序中的方法可能会因错误产生异常,但你不希望在方法中直接处理这些异常,而是由调用这个它的 方法来统一处理,
这时可使用throws关键词来声明这个方法会抛异常
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String str = in.nextLine();
try {
StringToDate(str);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void StringToDate(String str) throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date = sdf.parse(str);
System.out.println(date);
}
finally块
finally语句为异常处理提供一个统一的出口,使控制流程转到其它部分前能做程序状态统一的处理,一定会被执行.
try catch finally
RuntimeException
NullpointerException
ArrayIndexOutOfBoundsException
ClassCastException
NumberFormatException
IllegalArgumentException
ArithmeticException
ParseException