Java进阶13讲__第七讲

异常

异常就是代表程序出现的问题

1.认识异常

 

2.自定义异常

1.DIV_Exception 

package cn.hdc.oop7.diy;

public class DIY_Exception {
    public static void main(String[] args) {
//        需求:保存一个合法的年龄
        saveAge1(170);
        try {
            saveAge(170);
        } catch (IllegalAgeException e) {
            throw new RuntimeException(e);
        }
    }

    public static void saveAge1(int age) {
        if (age > 0 && age < 150) {
            System.out.println("年龄被成功保存" + age);
        } else {
//            用一个异常对象来封装这个问题
//            throw抛出异常对象至上一层
//            throws用在方法上,抛出方法内部的异常
            throw new IllegalAgeRuntimeException("年龄不合法");
        }
    }

    public static void saveAge(int age) throws IllegalAgeException {
        //                              throws用在方法上,抛出方法内部的异常
        if (age > 0 && age < 150) {
            System.out.println("年龄保存成功" + age);
        } else {
            throw new IllegalAgeException("年龄不合法");
        }
    }
}

 2.IllegalAgeException

package cn.hdc.oop7.diy;

//必须让这个类继承自Exception,才能成为一个编译时异常类。
public class IllegalAgeException extends Exception {
    public IllegalAgeException() {
    }

    public IllegalAgeException(String message) {
        super(message);
    }
}

3.IllegalAgeRuntimeException

package cn.hdc.oop7.diy;

//必须让这个类继承自RuntimeException,才能成为一个运行时异常类。
public class IllegalAgeRuntimeException extends RuntimeException {
    public IllegalAgeRuntimeException() {
    }

    public IllegalAgeRuntimeException(String message) {
        super(message);
    }
}

3.异常的处理

1.记录异常并响应合适的信息给用户

package cn.hdc.oop7.solve;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.text.ParseException;
import java.text.SimpleDateFormat;

/**
 * 异常的处理
 */
public class Exception1 {
    public static void main(String[] args) {
        try {
            test1();
        } catch (FileNotFoundException e) {
            System.out.println("文件未找到");
            throw new RuntimeException(e);
        } catch (ParseException e) {
            System.out.println("解析异常");
            throw new RuntimeException(e);
        }
    }

    public static void test1() throws ParseException, FileNotFoundException {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        sdf.parse("2020-11-06 11:32:22");
        test2();
    }

    private static void test2() throws FileNotFoundException {
        InputStream is = new FileInputStream("D:/MEINv.PNG");
    }
}

优化 

Exception是所有异常类的祖宗类,所以统一抛出Exception

package cn.hdc.oop7.solve;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.text.ParseException;
import java.text.SimpleDateFormat;

/**
 * 异常的处理
 */
public class Exception1_1 {
    public static void main(String[] args) {
        try {
            test1();
        } catch (Exception e) {
            System.out.println("您当前操作有问题");
            e.printStackTrace();
        }
    }

    public static void test1() throws Exception {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        sdf.parse("2020-11-06 11:32:22");
        test2();
    }

    private static void test2() throws Exception {
        InputStream is = new FileInputStream("D:/MEINv.PNG");
    }
}

2.尝试修复

package cn.hdc.oop7.solve;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Scanner;

/**
 * 异常的处理
 */
public class Exception2 {
    public static void main(String[] args) {
        //需求:调用一个方法,让用户输入一个合适的价格返回为止
        //尝试修复
        while (true) {
            try {
                //捕获原因,用户输入字符串等非法数据会终止程序
                System.out.println(getMoney());
                break;
            } catch (Exception e) {
                System.out.println("请您输入合法的价格:");
            }
        }
    }

    private static double getMoney() {
        Scanner sc = new Scanner(System.in);
        while (true) {
            System.out.println("请输入一个合适的价格:");
            double a = sc.nextDouble();
            if (a >= 0) {
                return a;
            } else {
                System.out.println("您输入的价格不合适");
            }
        }
    }
}

  • 19
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值