第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,意思是例外。这些,例外情况,或者叫异常,怎么让我们写的程序做出合理的处理。而不至于程序崩溃。

常见的错误:

  1. 用户输入错误

  2. 设备错误

  3. 硬件问题,比如打印机关掉、服务器问题

  4. 物理限制,磁盘满了。

  5. 代码限制,数组下标越界等

设计良好的程序应该在异常发生时提供处理这些错误的方法,使得程序不会因为异常的发生而终断或产生不可预见的结果。

异常处理机制的价值

如果没有异常处理机制,那么:

//将d:/a.txt复制到e:/a.txtif("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不存在!
}

两个坏处:

  1. 逻辑代码和错误处理代码放一起!

  2. 程序员本身需要考虑的例外情况较复杂,对程序员本身要求较高!

异常(Exception)的概念

异常机制就是当程序出现错误,程序如何安全退出的机制。

JAVA如何处理异常?

第一个异常示例和解析:

public static void main(String[] args) {int i = 1/0;gggggg
}Exception in thread "main" java.lang.ArithmeticException: / by zero
at chuji.BubbleSort.main(BubbleSort.java:11)

Java异常处理过程

JAVA是采用面向对象的方式来处理异常的。处理过程:

  1. 抛出异常:在执行一个方法时,如果发生异常,则这个方法生成代表该异常的一个对象,停止当前执行路径,并把异常对象提交给JRE。

  2. 捕获异常:JRE得到该异常后,寻找相应的代码来处理该异常。JRE在方法的调用栈中查找,从生成异常的方法开始回溯,直到找到相应的异常处理代码为止。

【133天】尚学堂高淇Java300集视频精华笔记(71-72)相关推荐

  1. 【138天】尚学堂高淇Java300集视频精华笔记(84)

    第84集:太阳系模型/基本类的封装/Star类的建立 本集知识点 将对象尽可能的抽象,可以有效减少代码量,比如此例中的Star类 package com.test084_087_solar;impor ...

  2. 【135天】尚学堂高淇Java300集视频精华笔记(74-76)

    第74-75集:异常机制.trycatchfinallyreturn执行顺序.捕获异常.声明异常throw.方法重写中异常的处理.手动抛出异常 异常的处理办法一:捕获异常 try try语句指定了一段 ...

  3. 【131天】尚学堂高淇Java300集视频精华笔记(65-66)

    第65集:常用类Date类的使用JDk源码分析 Date时间类(java.util.Date) 在标准Java类库中包含一个Date类.它的对象表示一个特定的瞬间,精确到毫秒. Date()分配一个D ...

  4. 【147天】尚学堂高淇Java300集视频精华笔记(108-109)

    第108集:容器equals和hashcodeJDK源代码分析 本集知识点 Java中规定,若两个对象equals比较后内容相等(为true),则hashCode必须相等,反之不然.[原因见内存分析图 ...

  5. 【153天】尚学堂高淇Java300集视频精华笔记(122-123)

    叨叨两句(2017.7.8) 我现在发现我太适合当程序员了,稍微懂点知识后想法就一堆一堆的,哈哈. 今天敲下面这个冒泡排序时感觉太特么好了.原来学编程最快乐的事情就是懂了一些知识后,把它变成可以在电脑 ...

  6. 【160天】尚学堂高琪Java300集视频精华笔记(129)

    明天开始,专栏增加一个黑马程序员的课程更新. 其它容器收尾讲解 队列Queue与Deque(单向队列与双向队列) Enumeration(较老的接口,JDK1.5前使用频繁,维护旧系统会用到) Has ...

  7. 尚学堂 高琪JAVA300集第十一章作业 编程题答案

    本人 JAVA初学者 在寻找这一方面的答案时没有看见 ,本着分享的精神 自己做了出来 也就传上来了 水平有限 存在有错的地方或者改进的方法 ,望大佬们可以提出 万分感谢. 1.1. 设计一个多线程的程 ...

  8. 【JavaSE】高淇300集第一季笔记

    ------------------------------------------------------1.如何学习---------------------------------------- ...

  9. python 递归函数_Python尚学堂高淇|P82P86面向对象和面向过程的区别LEGB规则nonlocal_global递归函数阶乘计算案例...

    P82-递归函数-阶乘计算案例 #使用递归函数计算阶乘def factorial(n):if n==1:return 1else:return n*factorial(n-1)result=facto ...

最新文章

  1. PageSpeed Insights
  2. 0-1背包问题 动态规划java_C#使用动态规划解决0-1背包问题实例分析
  3. 【Python学习系列十一】Python实现决策树实现C4.5(信息增益率)
  4. c语言uppercase恢复小写,C语言转换字符串为大写和小写
  5. JS ES6中export和import详解
  6. Windows驱动—Windows应用程序和Windows驱动通信编程
  7. Swift的一些问题
  8. Q125:PBRT-V3,对比VolPathIntegrator::Li()和EstimateDirect()判断Medium的方式
  9. sqlite如何与mysql连接数据库连接_c#中怎么连接到sqlite数据库?
  10. Linux下PHP+MySQL+CoreSeek中文检索引擎配置
  11. html等宽字体汉字,等宽字体(Monospaced Font)
  12. 2022程序员都需要知道的 6 个挺火的开源项目
  13. java简历个人技术描述_简历个人描述
  14. 【win7安装composer错误】:The quot;https://getcomposer.org/download/1.6.2/composer.phar.sigquot; file cou
  15. Word/WPS 文本转换成表格
  16. 教培机构如何搭建在线教育网校平台
  17. 计算机网络——各层次网络互联设备
  18. 170915 逆向-问鼎杯题库(小磊生病了)
  19. 设计模式-优惠券-策略模式
  20. 吴雪筠校友报告会----职场仪表、心态、自强之道

热门文章

  1. Science公布:全世界最前沿的125个科学问题
  2. 腾讯张正友:攻克可进化机器人,6个研究趋势与7大技术突破点
  3. 英特尔详解5G将如何助力VR的未来发展
  4. 高精度定位!“天地一体”基础设施助中国北斗在商用领域“弯道超车”
  5. AI指数评论:提防“路灯谬误”,开启全球多方对话
  6. 硬件巨头正在崛起,中国独占鳌头
  7. 漫画:Object 类很大,你忍一下(完结篇)
  8. 时间管理大师!一程序员同时给谷歌和 Facebook 打工??
  9. 如何用纯 CSS 创作一只愤怒小鸟中的黑炮
  10. Jenkins进阶系列之——01使用email-ext替换Jenkins的默认邮件通知