JavaDay17学习总结

一、笔记

1.异常
1.在程序运行时发生的错误
2.异常是一个对象throwable
异常的体系结构:

Throwable类:Java 语言中所有错误或异常的超类
Error :严重的错误,一般是jvm报的错, 需要修改源代码 
Exception:这个不是很严重的异常,这种异常必须解决 
RuntimeException:运行是异常,开发人员不需要去处理,是由jvm来给其处理

jvm 自带处理异常:

1.第一种(位置,时间,异常的信息)打印出来 
2.程序进行终止

jvm 处理异常:
如果程序发生了异常,,没有任何方法或者是类来处理这个异常,最后就有jvm来处理
手动处理异常:
1.抛出异常,让调用值去处理 (捕获异常)
2.自己来处理

处理异常的五个关键字: try catch finally throw   throws

自己处理异常的第一种方法 语法格式:

 try {
                 有可能发生异常代码

                        }catch (异常的类型 的申明,比如控制针异常,算术异常等等){
                            
                   发生异常之后执行 这里面的代码           
                
                          }

常见的异常:

 ArithmeticException 算术异常:  
 ParseException  格式转化异常错误   
 java.lang.NullPointerException  空指针异常

执行的流程:

没有发生异常的流程==>执行try里的代码==>执行完毕(不执行catch)
发生异常存在两种情况:
第一种也就是 catch 申明的异常,满足发生的异常 ==>就会正常执行catch {} 里的代码,如果不满足就不执行

第一种方式处理多个异常:

    try {
                    有可能发生异常代码

                    }catch (异常的类型1的申明){
                            
                       发生异常类型1之后执行 这里面的代码           
                
                      }catch (异常的类型1的申明){
                                发生异常类型2之后执行 这里面的代码       
  
                                   }


注意点:
1. catch 里的代码必须与进行匹配,才能满足条件,走 catch 代码块
2. 多个 catch  异常的时候,必须先写小的异常,再写大异常

处理异常的第二种方式: 最常用

         try {
                            有可能发生异常代码

                          }catch (异常的类型1的申明){
                            
                                      发生异常类型1之后执行 这里面的代码           
                
                             }catch (异常的类型1的申明){
                                      发生异常类型2之后执行 这里面的代码       
  
                              }finally {
                                        不管发生不发生异常都会执行这里面代码
                                            }


注意点:
1.如果遇到return 关键字,先执行完finally里的代码,然后再return ,只有这种方式杀死jvm(System.exit(0))

2作用: 关闭与释放资源(一般是对流资源)

3.在jdk1.7 之后是catch 申明是可以存在多个异常  用|连接

4. 在开发中,如果有多个异常:最后都会捕获一个最大是异常也是Exception

5.捕获异常,如果具体到某一种类型的异常,尽量具体一点:方便解决问题

第三种方式:

(不常用) try {
                              可能发生异常的代码,  并没有具体去捕获

                                 }finally {
                                不管发生不发生异常都会执行这里面代码
                                      }


好处: 让代码进行分离,结构更加清晰

异常的分类 :
编译时异常: 也就是在运行之前就报错(编译时异常 的父类是Exception
运行时异常 :RuntimeException 或者是它的子类
编译异常必须进行处理, 运行时异常 可以暂时不处理 (jvm)
异常对象一些方法 :

Throwable子类没有什么特别的方法 

 public StackTraceElement[] getStackTrace() 打印其堆栈信息,(也就异常信息)
 
 public String getMessage()  返回此 throwable 的详细消息字符串。
 
 public String toString()  返回此 throwable 的简短描述

在继承中的异常:
父类是什么异常,子类跟着写什么异常(不会产生一些不必要的错误)

throw:异常的声明或者是定义(声明)

 声明异常的格式: throw new NullPointerException(); throw(关键字)+ 具体的异常

 好处:可以在方法里声明自己想声明的异常
 
 注意点:
 1. 声明的异常必须写在方法里 

 2. 声明的异常必须是Exception 是子类或者是自己 

 3. 声明的异常如果是运行时异常可以不做处理,其它的都要做处理

throws: 抛出异常

 好处: 自己不处理,让调用这去处理
 语法: throws  Exception   也就是  throws 加上具体的异常
                                                 
注意点:
1.必须写在方法的小括号后面 
2.声明的异常必须是Exception 是子类或者是自己 

 在异常的处理方式,1.抛出异常  2.捕获

throw 与 throws的区别:

1 throw     是异常的申明   2.throws  用于异常抛出
2. throw  确实会发生异常    throws   异常不一定会出现
3.throw   后面只能够跟 一个     throws  可以跟多个 
4.throw   与  throws   搭配使用 

自定义异常:

继承父类一般分为两种情况 
  第一个是继承 RuntimeException    
  第二种是  Exception(常用)
 一般自定义异常的名字是:xxxException    以Exception 进行结尾
 一般也就是重写其构造:

2.File类
一个文件对象 文件和目录路径名的抽象表示形式 导包是java.io.File;
路径:

  1. 绝对路径 也就是根路劲(也就是到具体的盘符)

  2. 相对路径 (也就是有参照物)
    Windows: 根路径也就是其盘符 UNIX: 表示一个斜杠

注意点:File 类的实例是不可变的;也就是说,一旦创建,File 对象表示的抽象路径名将永不改变 

File 对象的构造方法:

public File(String pathname)  通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例
 public File(String parent,String child) parent  表示父级目录路径(字符串), child 表示子目录(字符串)
 public File(File parent,String child)  表示父级目录路径(文件对象),child 表示子目录(字符串)
 注意点:   只要有父子关系,必须父目录存在

创建 :

创建文件的方法:createNewFile()
 创建一个文件夹  public boolean mkdir() 创建一个文件夹
 public boolean mkdirs()   如果父目录不存在,一同创建父目录

删除:

public boolean delete()  删除一个文件 包括空的文件夹
 注意点:  不会进电脑垃圾回收站
 重命名文件: public boolean renameTo(File dest)     
 注意点:如果在同一个目录下,是修改其名字,如果不在同一个的目录下是剪切+修改名字

判断类型:

public boolean exists() 判断这个文件是否存在
 public boolean isDirectory()  判断是否是文件夹 
 public boolean isFile()    是否是一个文件

获取:获取路径

public String getAbsolutePath()   获取文件的其绝对路径
 public String getPath()   获取构造方法传递的那个参数的路径  new File("d:\\1.txt")
 public String getName()    获取文件的名称 
 public String getParent()   返回上一级目录 
 public long length()   文件内容的的长度(字节数)
 public String[] list()  返回的是改目录下的第一级的所有文件包括文件夹

3.递归
所谓递归就是方法自己调用自己。

二、总结

第十七天的学习,今天学习了异常、file类以及递归,递归主要掌握他的思想。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值