JAVA——异常

一、处理异常的目的

        很多时候我们处理异常并不是为了修复程序的错误,而是就算程序出现了错误,也能够让程序继续执行 


二、jvm默认处理异常的过程

 1.打印错误信息

          a.异常名称,例如: java.lang.ArithmeticException

          b.异常的消息 / by zero

          c.异常所发生的方法位置 

          d.异常所在Java文件中 

          e.异常发生行号 

 2.终止程序 

          System.exit(0);

  JVM处理异常的方式不能够满足我们开发的需求,那么我们需要自己处理异常.


三、处理异常的方式

     方式一: try...catch..finally

     方式二: 在含有异常的方法上写上:“throws+可能异常异常名”,可将异常问题抛给调用者来处理


方式一处理异常:

      异常处理的格式:

try{

             //放置程序可能出现问题的代码

}catch(异常类  异常名){

            //这里放置异常处理的代码

}finally{

            //释放资源

        }

  注意:

       1. try块的代码越少越好

       2. try块中一旦发生异常,那么try块中发生异常,后面所有的代码都不会被执行

       3. 多个catch块只会执行与之相匹配的一个

       4. 若使用Exception接收异常必须放在异常的最后面,满足先子类后父类


四、异常的执流程

       1.程序执行到错误行,系统会创建一个异常对象,并且抛给我们,例如:

               ArithmeticException exception = new ArithmeticException("/by zero");

               throw exception ;

       2.程序进入catch块进行逐个匹配

           若匹配成功,程序执行catch块代码(程序可继续运行)

               ArithmeticException ae = exception ;

               Exception e = exception ;

若匹配失败,则会交给jvm来处理(让程序挂掉)


五、处理异常的标准方式

      1.能够显示处理的尽量显示处理,提高程序的可读性

      2.但是一定要在异常处理的最后加上父类Exception处理,防止系统将异常交给虚拟机来处理


六、throw和throws的区别

      1. throws出现在方法的声明上,throw关键出现在方法内

      2. throws表示一种异常的可能性,throw表示程序的必然性

      3. throws可以声明多个异常类,throw只能够抛出一个异常

      4. throws声明的是异常类,throw抛出的是异常对象

七、自定义一个异常类来处理异常


package ILikeJava;

import java.util.Scanner;

public class Test {

        public static void main(String[] args) {

                Scanner input = new Scanner(System.in);

                System.out.println("请输入分数");

                double score = input.nextDouble();

                Teacher123 t = new Teacher123();    

                try {

                        t.checkScore(score);       

                        System.out.println("合法分数,输入成功");

                } catch (WrongInputException e) {

                        e.printStackTrace();

                } catch (Exception e) {

                        e.printStackTrace();

                } finally {

                        input.close();

                }

        }

}

class Teacher123 {

        public boolean checkScore(double score) throws WrongInputException {

                if (score > 100 || score < 0) {

                        throw new WrongInputException("分数不合法,需在0-100之间");

        }

          return true;

        }

}

class WrongInputException extends Exception {

        private static final long serialVersionUID = 1L;

                public WrongInputException() {

        }

        public WrongInputException(String message) {

                super(message);

        }

}

你可能感兴趣的:(JAVA——异常)