java异常
1
异常在子父类覆盖中的体现:
1,子类在覆盖父类时,如果父类的方法抛出异常,那么子类的覆盖方法,只能抛出父类的异常或者该异常的子类.
2,如果父类方法抛出多个异常,那么子类在覆盖该方法时,只能抛出父类异常的子集.
3,如果父类或者接口的方法中没有异常抛出,那么子类在覆盖方法时,也不可以抛出异常
如果子类方法发生了异常,就必须要进行try处理,绝对不能抛。
throws和throw的区别
Throws使用在函数上
Throw使用在函数内
Throws后面跟的异常类,可以跟多个,用逗号隔开
Throw后跟的异常对象
RuntimeException 运行时异常
如果在函数内抛出该异常,函数上可以不用声明,编译一样通过
如果在函数上声明了该异常,调用者可以不用进行处理.
对于异常分两种:
1,编译时被检测的异常.
2.编译时补被检测的异常(运行时异常.RuntimeException以及其子类)
package pack; //自定义运行时异常 class FuShuException extends RuntimeException{ FuShuException(String msg){ super(msg); } } class Person{ public void checkName(String name){ // if(name.equals("lisi")){ NullPointerException /* * if(name == null){ * throw new FuShuException(); * } * */ if("lisi".equals(name)){ //if(name!=null && name.equals("lisi")){ System.out.println("yes"); }else{ System.out.println("no"); } } } class Work{ int div(int a, int b) throws Exception{ //这里抛 if(b==0) throw new Exception(); //普通异常还必须在方法上抛出 return a/b; } } public class Demo { public static void main(String[] args) { Person p = new Person(); p.checkName(null); } }