第71集:常用类/file类/打印目录树状结构/递归算法
课堂代码
package com.test071;import java.io.File;public class Test071 { public static void main(String[] args){ /** * 1. File文件类的常见构造器,常见方法使用 * 2. 递归: * 概念:在java代码中出现自己调用自己的情况,可称之为递归 * 组成:递归体、递归头(用来做判断) * 注意:若无递归头,递归将会是死循环。 * */ File f = new File("/Users/wangtao/Desktop/AAA"); printFile(f,0); } static void printFile(File file, int level){ for(int i = 0;i < level;i++){//是第几级目录,就打印几个“-” System.out.print("-"); } System.out.println(file.getName()); if(file.isDirectory()){ File[] files = file.listFiles(); for(File temp:files){ printFile(temp,level+1); } } }}
第72集:异常机制ExceptionThrowableError的概念
导引问题
实际工作中,遇到的情况不可能是非常完美的。比如:你写的某个模块,用户输入不一定符合你的要求、你的程序要打开某个文件,这个文件可能不存在或者文件格式不对,你要读取数据库的数据,数据可能是空的等。我们的程序再跑着,内存或硬盘可能满了。等等。软件程序在运行过程中,非常可能遇到刚刚提到的这些异常问题,我们叫异常,英文是:Exception,意思是例外。这些,例外情况,或者叫异常,怎么让我们写的程序做出合理的处理。而不至于程序崩溃。
常见的错误:
用户输入错误
设备错误
硬件问题,比如打印机关掉、服务器问题
物理限制,磁盘满了。
代码限制,数组下标越界等
设计良好的程序应该在异常发生时提供处理这些错误的方法,使得程序不会因为异常的发生而终断或产生不可预见的结果。
异常处理机制的价值
如果没有异常处理机制,那么:
//将d:/a.txt复制到e:/a.txt if("d:/a.txt"这个文件存在){if(e盘的空间大于a.txt文件长度){if(文件复制一半IO流断掉){停止copy,输出:IO流出问题!}else{copyFile("d:/a.txt","e:/a.txt");}}else{输出:e盘空间不够存放a.txt!}}else{输出:a.txt不存在!}
两个坏处:
逻辑代码和错误处理代码放一起!
程序员本身需要考虑的例外情况较复杂,对程序员本身要求较高!
异常(Exception)的概念
异常机制就是当程序出现错误,程序如何安全退出的机制。
JAVA如何处理异常?
第一个异常示例和解析:
public static void main(String[] args) { int i = 1/0; gggggg}Exception in thread "main" java.lang.ArithmeticException: / by zeroat chuji.BubbleSort.main(BubbleSort.java:11)
Java异常处理过程
JAVA是采用面向对象的方式来处理异常的。处理过程:
抛出异常:在执行一个方法时,如果发生异常,则这个方法生成代表该异常的一个对象,停止当前执行路径,并把异常对象提交给JRE。
捕获异常:JRE得到该异常后,寻找相应的代码来处理该异常。JRE在方法的调用栈中查找,从生成异常的方法开始回溯,直到找到相应的异常处理代码为止。