运行时异常:一般是程序员业务没有考虑好或者是编程逻辑不严谨引起的程序错误
编译时异常是编译阶段就出错的,所以必须处理,否则代码无法通过
注:一个方法内部可能有很多个异常,但是最终只会抛出一个异常,就看谁先出现了!
在开发中第三种方式是最好的,底层异常抛出去给最外层,最外层集中捕获处理。
可以不处理,建议处理一下,只需要在最外层捕获处理就可以
代码参考
- public class Test2 {
- public static void main(String[] args) {
- Scanner sc = new Scanner(System.in);
- while(true){
- try {
- System.out.println("请你输入合法的价格:");
- String priceStr = sc.nextLine();
- //转成double类型的数据
- double price = Double.valueOf(priceStr);
- //判断价格是否大于0
- if (price > 0){
- System.out.println("价格:"+price);
- break;
- }else {
- System.out.println("价格必须是正数!");
- }
- } catch (Exception e) {
- System.out.println("用户输入的数据有问题,请输入合法数值!");
- e.printStackTrace();
- }
- }
- }
- }
补充:throw和throws的区别
throw:在方法内部直接创建一个异常对象,并抛出
throws:用在方法申明上,抛出方法内部的异常