Java基础知识——异常处理

    技术2022-07-12  78

    异常处理

    Throwable编译时异常与运行时异常编译时异常运行时异常 try..catch...throws自定义异常

    Throwable

    Throwable是所有异常的父类。

    方法名说明public String getMessage()返回详细消息字符串public String toString()返回可抛出的简短描述public void printStackTrace()把异常的错误信息输出在控制台

    编译时异常与运行时异常

    所有 RuntimeException 类及其子类的实例被称为运行时异常,其他的异常都是编译时异常

    编译时异常

    必须显示处理,否则程序就会发生错误,无法通过编译

    运行时异常

    无需显示处理,也可以和编译时异常一样处理

    try…catch…

    try { 可能出现异常的代码; } catch (异常类名 变量名) { 异常处理的代码; }

    执行流程: 程序从try里面的代码开始执行,出现异常会自动生成一个异常类对象,该异常类对象将被提交给Java运行时系统,接收到异常对象后会到catch中去找匹配的异常类,找到后进行异常的处理,执行完毕后,程序可以继续向下执行。

    throws

    只是抛出异常,并不像try…catch…一样处理了异常,抛出异常后程序不会向下进行。 有时候出现的异常是我们处理不了的,可以用throws的处理方法。

    public static void method() throws ArrayIndexOutOfBoundsException{ int [] arr = {1, 2, 3}; System.out.println(arr[3]); }

    总结:

    编译时异常必须进行处理,可以使用try…catch或throws,如果使用throws这种方案,将来谁调用谁处理。运行时异常可以不处理,出现问题后需要修改代码。

    自定义异常

    自定义异常类需要继承自Exception或RuntimeException 示例:定义一个成绩异常类

    public class ScoreException extends Exception{ public ScoreException() {} public ScoreException(String message){ super(message); } }

    Teacher.java

    public void checkScore(int score) throws ScoreException{ if(score < 0 || score > 100){ throw new ScoreException(); } else { System.out.println("分数正常"); } } throwsthrow用在方法声明后面,跟的是异常类名用在方法体内,跟的是异常对象名表示抛出异常,由该方法的调用者来处理表示抛出异常,由方法体内的语句处理表示出现异常的一种可能性,并不一定会发生这些异常执行throw一定抛出了某种异常
    Processed: 0.009, SQL: 9