------------------------------------------------android培训、java培训、期待与您交流!-----------------------------------------------
❶内部类
❶内部类的访问规则
①内部类可以直接访问外部类中的成员,包括私有
原因:内部类中持有了一个外部类的引用 如:外部类名.this
②外部类要访问内部类,必须建立内部类对象
Outer.Inner in = new Outer().new Inner();
❷被static修饰的内部类
①外部类访问被static修饰内部类的非静态成员方法
new Outer.Inner().function()在这里function是非静态方法
②外部类访问被static修饰内部类的静态成员方法
Outer.Inner.function()在这里function是静态方法
③只能直接访问外部类中的static成员
④当内部类中定义了静态成员,该内部类必须是static的
⑤当外部类中的静态方法访问内部类时,内部类也必须是static的
❸内部类的使用场景
当描述事物时,事物的内部还有事物,该事物用内部类来描述
❷异常
❶异常的概念
程序在运行过程中的一些特殊情况,例如:内存不够用,文件找不到,对象是Null,数组下标越界。当产生这些特殊情况的时候,可能会造成程序不能正常运行
❷异常的体系
❸异常体系的特点
异常体系中的所有类以及建立的对象都具备可抛性
也就是说可以被throw和throws关键字所操作,只有异常体系具备这个特点
❹Error与Exception的区别
①Error是程序无法处理的错误,比如OutOfMemoryError、ThreadDeath等。这些异常发生时,Java虚拟机(JVM)一般会选择线程终止
②Exception是程序本身可以处理的异常,这种异常分两大类运行时异常和非运行时异常,程序中应当尽可能去处理这些异常
❺运行时异常和非运行时异常
①运行时异常都是RuntimeException类及其子类异常,如NullPointerException、IndexOutOfBoundsException等,这些异常是不检查异常,程序中可以选择捕获处理,也可以不处理,这些异常一般是由程序逻辑错误引起的,程序应该从逻辑角度尽可能避免这类异常的发生。
②非运行时异常是RuntimeException以外的异常,类型上都属于Exception类及其子类,从程序语法角度讲是必须进行处理的异常,如果不处理,程序就不能编译通过,如IOException、SQLException等以及用户自定义的Exception异常,一般情况下不自定义检查异常
❻throw和throws关键字
①throw关键字是用于函数内部,用来抛出一个Throwable类型的异常,如果抛出了检查异常,则还应该在方法头部声明方法可能抛出的异常类型
②throws定义在函数上,用于抛出异常类
❼RuntimeException特点
①函数内如果抛出的RuntimeExcpetion异常,可以不用throws定义在函数上
②如果该异常的发生,无法在继续进行运算,就让自定义异常继承RuntimeException
❽RuntimeException特点
①函数内如果抛出的RuntimeExcpetion异常,可以不用throws定义在函数上
②如果该异常的发生,无法在继续进行运算,就让自定义异常继承RuntimeException
❾finally关键字
①finally块都会执行。
②finally中定义的通常是 关闭资源代码
③finally只有一种情况不会执行,当执行到System.exit(0);fianlly不会执行
❾三种异常处理格式
①try{}
catch (){}
②try{}
finally{}
③try{}
catch (){}
finally{}
❿异常注意事项
①子类抛出的异常必须是父类的异常的子类或者子集。
②如果父类或者接口没有异常抛出时,子类覆盖出现异常,只能try不能抛
❸总结一下Java异常处理的要点
①异常是程序运行过程过程出现的错误,在Java中用类来描述,用对象来表示具体的异常。
②Java将其区分为Error与Exception,Error是程序无力处理的错误,Exception是程序可以处理的错误,异常处理是为了程序的健壮性。
③Java异常类来自于Java API定义和用户扩展。通过继承Java API异常类可以实现异常的转译。
④异常能处理就处理,不能处理就抛出,最终没有处理的异常JVM会进行处理。
⑤对于一个应用系统,设计一套良好的异常处理体系很重要。这一点在系统设计的时候就应该考虑到
⑥异常将问题进行封装,将正常流程代码和问题处理代码相分离,方便于阅读
-----------------------------------------android培训、java培训、java学习型技术博客、期待与您交流! --------------------------
详情请查看:http://edu.csdn.net/heima