Exception
Throwable(运行时可能碰到的任何问题的总称)。
―――> Error(非常严重的错误,系统不要求程序员处理,也处理不了)。
―――>Exception(从代码的角度是程序员可以处理的问题,异常,例外)
异常是运行时概念。
――>UncheckedExcepiton(RuntimeException)
程序员小心谨慎完全可以避免的异常,系统不要求程序员处理(可以不管),3/0,数组下标越界,NullPointerException,类型转换异常
――>CheckedException(已检查异常)
系统要求必须处理
异常的处理
1.声明抛弃异常(消极的处理):
Throws:抛弃 写在方法名的定义上,全面跟要抛弃的异常类
异常产生时,责任可能并不在当前方法,让异常找到一个最佳的位置去处理。
抛弃过程中可以对异常类型进行扩展,但是不能缩小。
当代码出现异常时,代码不会向下执行,jvm会将异常封装成相应的异常类的对象,向外抛出,
Throw:抛出, 出现在方法的实现里,用来抛出异常对象,throw后面跟异常对象。
方法的返回值:1 正常运行,要求方法必须返回定义的类型的值。
2 非正常结束(出异常),方法返回的是异常对象。
方法覆盖:名相同,参数相同,返回类型类型相同
访问权限不能更小
抛弃的异常不能更多
2.try-catch(积极的处理):
一个try语句后面可以跟多个catch;catch有父类时,子类先写,父类后写;如果没有继承,顺序无所谓。
Try{
1 **********************;
2 &&&&&&&&&&&&&&;
3 %%%%%%%%%%%%%%;
}catch(Exception e){
4 ##################
e.printStackTrace()//打印异常堆栈信息
}catch2{
5 &&&&&&&&&&&&&&;
}finally{
6!!!!!!!!!!!!!!!!!!!!!!!!1//不管有没有异常出现都要执行的代码。
//当try catch里出现了System.exit(0),finally不会执行。
}
7 @@@@@@@@@@@@@@
第一种:如果1,2,3没产生任何异常,3执行后直接执行6,然后执行7
第二种:如果2产生异常,3不会被执行,直接跳出try{},匹配catch和catch里定义的类型一致,执行4,随后执行6,然后执行7;如果不一致,再匹配catch2,相同执行5随后执行6,然后执行7;如果和catch不同,语法错误
语法有问题
Try -―――― catch
Try ―――--- finally
Try ―――― catch ――― finally
4 自定义异常类型(业务异常)
//已检查异常
Class MyException extends Exception{
}
//未检查异常
Class MyException extends RuntimeException{
}
Throws 抛弃
throw 抛出
throwable 运行时可能碰到的任何问题的总称
Final 修饰属性,方法,类;不能被继承,不能被覆盖。
finalize 在回收器回收前,提示信息,执行finalize
finally 在try catch结构中finally一定会执行
String 内存空间不可变化
StringBuffer 可变化
共性化的父类,个性化的子类