异常
- 运行时异常:RuntimeException及其子类,编译阶段不会出现错误提醒,运行时出现的异常(如:数组索引越界异常)
- 编译时异常:编译阶段就会出现错误提醒的。(如:日期解析异常)
自定义异常
- java无法为这个世界上全部的问题都提供异常类来代表,如果企业自己的某种问题,想通过异常来表示,以便用异常来管理该问题,那就需要自己来定义异常类了。
public static void main(String[] args) {
try {
saveAge(223);
System.out.println("底层执行成功!");
} catch (Exception e) {
e.printStackTrace();
System.out.println("底层出现了bug");
}
try {
saveAge2(28);
} catch (AgeIllegalException e) {
e.printStackTrace();
System.out.println("saveAge2底层执行出现bug");
}
}
public static void saveAge2(int age) throws AgeIllegalException {
if(age>0&&age<150){
System.out.println("年龄被成功保存: "+age);
}else {
// 用一个异常对象封装这个问题
throw new AgeIllegalException("/age is illegal, your age is " + age);
}
}
public static void saveAge(int age) {
if(age>0&&age<150){
System.out.println("年龄被成功保存: "+age);
}else {
// 用一个异常对象封装这个问题
throw new AgeIllegalRuntimeException("/age is illegal, your age is " + age);
}
}
异常的常见处理方法
- 捕获异常,记录异常并响应合适的信息给用户。
public static void main(String[] args) {
try {
test1();
} catch (FileNotFoundException e) {
System.out.println("您要找的文件不存在!");
e.printStackTrace();
} catch (ParseException e) {
System.out.println("您要解析的时间有问题。");
e.printStackTrace();
}
}
public static void test1() throws FileNotFoundException, ParseException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date d = sdf.parse("2028-11-11 10:24");
System.out.println(d);
test2();
}
public static void test2() throws FileNotFoundException {
// 读取文件
InputStream is = new FileInputStream("D:/meinv.png");
}
运行结果:
2. 捕获异常,尝试重新修复。
public static void main(String[] args) {
while (true) {
try {
System.out.println(getMoney());
break;
} catch (Exception e) {
System.out.println("请你输入合法的数字!!");
}
}
}
public static double getMoney(){
Scanner sc = new Scanner(System.in);
while (true) {
System.out.println("请你输入合适的价格:");
double money = sc.nextDouble();
if(money >= 0){
return money;
}else {
System.out.println("您输入的价格是不合适的!");
}
}
}