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一定抛出了某种异常
- throws
- 格式:
```java import java.util.* ; public class Demo { public static void main(String[] args) {public class 异常类名 extends Exception{
无参构造
带参构造
}
} }Scanner sc = new Scanner(System.in) ;
int i = sc.nextInt() ;
Teacher t = new Teacher() ;
try{
t.checkScore(i);
}catch (Exception e){
e.printStackTrace();
}
public class ScoreException extends Exception{ public ScoreException(String message) { super(message); }
public ScoreException() {
}
}
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解决)