Throwable

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

    编译时异常和运行时异常

  • java中的异常被分为两大类:编译时异常和运行时异常,也被称为受检异常和非受检异常。所有的RuntimeException类及其子类被称为运行时异常,其他的异常都是编译时异常。

  • 编译时异常:必须显示处理,否则程序就会发生错误,无法通过编译
  • 运行时异常:无须显示处理,也可以和编译时异常一样处理。

    throws

  • 虽然通过try catch 可以对异常进行处理,但是并不是所有的情况我们都有权限进行异常的处理,也就是说,有些时候可能出现的异常是我们处理不了的,这个时候可以用java提供的throws的处理方案。

  • 格式: throws 异常类名; 注意:这个格式是跟在方法的括号后面的
  • 编译时异常必须要进行处理,两种处理方案:try catch 或者throws,如果采用throws这种方案,将来谁调用谁处理
  • 运行时异常可以不处理,出现问题后,需要我们回来修改代码

    自定义异常

  • throws和throw区别

    • throws
      • 用在方法声明后,跟的是异常类名
      • 表示抛出异常,由该方法的调用者来处理
      • 表示出现异常的一种可能性,并不一定会发生这些异常
    • throw
      • 用在方法体内,跟的是异常对象名
      • 表示抛出异常,由方法体内的语句处理
      • 执行throw一定抛出了某种异常
  • 格式:
    1. public class 异常类名 extends Exception{
    2. 无参构造
    3. 带参构造
    4. }
    ```java import java.util.* ; public class Demo { public static void main(String[] args) {
    1. Scanner sc = new Scanner(System.in) ;
    2. int i = sc.nextInt() ;
    3. Teacher t = new Teacher() ;
    4. try{
    5. t.checkScore(i);
    6. }catch (Exception e){
    7. e.printStackTrace();
    8. }
    } }

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

  1. public ScoreException() {
  2. }

}


public class Teacher { public void checkScore(int score) throws ScoreException{ if(score<0 || score>100){ throw new ScoreException(“分数有误!!”) ; }else { System.out.println(“分数正常!!”); } } } 运行结果: 333 com.bai.ScoreException: 分数有误!! at com.bai.Teacher.checkScore(Teacher.java:6) at com.bai.Demo.main(Demo.java:10)

Process finished with exit code 0

```

碰到过的异常

Caused by: java.sql.SQLException: Data truncated for column ‘orderTime’ at row 1

  • 原因:java实体类的 orderTime 属性与数据库表中的数据类型不一致。(可以通过typeHandler解决)

图片.png图片.png