Java中异常体系
异常主要分为运行时异常与编译时异常
运行时异常:即语法正确 编译也能通过,即在运行期间产生的异常
编译时异常: 即语法正确但不能编译,即在编译期间就产生的异常
异常处理方式
异常处理方式一:
示例代码
package stream.exception.log.d3_exception;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class ExceptionDemo1 {
public static void main(String[] args) throws Exception {
//编译时异常处理机制1
System.out.println("程序开始");
parseTime("2011-11-11 11:11:11");
System.out.println("程序结束");
}
public static void parseTime(String date) throws Exception {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM-dd HH:mm:ss");
Date d = sdf.parse(date);
System.out.println(d);
InputStream it = new FileInputStream("D:\\Desktop\\images\\R-C (2).jpg");
}
}
运行截图
异常处理方式二:
示例代码
package stream.exception.log.d3_exception;
import java.io.FileInputStream;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
public class ExceptionDemo2 {
public static void main(String[] args) {
//try...catch编译时异常处理机制
System.out.println("程序开始");
parseTime("2011-11-11 11:11:11");
System.out.println("程序结束");
}
public static void parseTime(String date) {
try {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM-dd HH:mm:ss");
Date d = sdf.parse(date);
System.out.println(d);
InputStream it = new FileInputStream("D:\\Desktop\\images\\R-C (2).jpg");
} catch (Exception e) { //只写1个catch,拦截一切异常(企业级写法)
e.printStackTrace();//打印异常栈信息
}
}
}
运行截图
异常处理方式三: 是将异常处理方式一与异常处理方式二结合
示例代码
package stream.exception.log.d3_exception;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class ExceptionDemo3 {
public static void main(String[] args) {
//编译时异常处理机制3
System.out.println("程序开始");
try {
parseTime("2011-11-11 11:11:11");
System.out.println("操作成功");
} catch (Exception e) {
e.printStackTrace();
System.out.println("操作失败");
}
System.out.println("程序结束");
}
public static void parseTime(String date) throws Exception {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date d = sdf.parse(date);
System.out.println(d);
InputStream it = new FileInputStream("D:\\Desktop\\images\\R-C (2).jpg");
}
}
运行截图
异常处理案例
需求:
让用户输入价格大于0。
如果输入的价格为一堆乱码,则会出现错误,此时就需引入异常处理。
实现代码
package stream.exception.log.d4_exception_test;
import java.util.Scanner;
/**
需求:让用户输入价格大于0
如果输入的价格为一堆乱码,则会出现错误,此时就需引入异常处理
*/
public class Test1 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
while (true){
try {
System.out.println("请输入价格:");
String priceStr=sc.nextLine();
Double price=Double.valueOf(priceStr);
if (price>0){
System.out.println("价格:"+price);
break;
}else {
System.out.println("价格输入错误,请重新输入~~~");
}
} catch (NumberFormatException e) {
System.out.println("请输入正确格式。");
}
}
}
}
运行截图