自底而上查看类是否加载过:
- 1 检查类对象是否被加载过
- 2 如果被加载过,直接返回Class对象
- 3 如果没有被加载过,则调用parent中的loadClass方法,重新回到第 1 步
( 如果parent为空,则调用native的findBootstrapClassOrNull方法)
自顶而下尝试加载类:
- 1 使用findClass方法,从硬盘上查找是否有对应的字节码文件
- 有则加载该字节码进内存
- 没有该字节码文件,则抛出异常。
会捕获所有parent的loadClass方法的异常。
如果自顶而下没有找到该字节码文件,那么最后会从用户自定义的类加载器中查找字节码文件
此时的异常没有被捕获,会被抛出。