黑马程序员——第十篇:异常处理、File类

  ------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a

  href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------

 

1、异常对象

任何事物都是对象,异常也是对象

Java语言,异常也被封装成了对象

对象,生活实际事物,,对这个事物抽象描述

异常类,描述异常的对象

 

程序中:

     NullPointerException  空指针异常

     ArrayIndexOutOfBoundsException 数组下标越界

2、异常类的继承体系

  异常中有个最高层的父类

    java.lang.Throwable  可以抛出

    所有错误和异常的父类

    两个子类

      Error     错误

      Exception 异常

        两个派系                                                                                                      

         RuntimeException     运行时期异常

         不是RuntimeException 编译异常

 

    错误和异常

    错误一旦发生,只能修改源代码, 举例:非典,癌症,艾滋

 

    发生异常,处理后,程序可以继续执行, 举例:阑尾炎

 

   1.  Throwable类构造方法

      Throwable() 空参数

      Throwable(String message)传递字符串

 

   2.  Throwable处理异常信息方法

      String toString()  返回异常信息的简短描述

      String getMessage()返回异常信息的详细描述

      void printStackTrace() 将异常信息,追踪至标准错误流

       理解: 异常信息输出到控制台中

3. 程序Demo

3、异常处理方式 try..catch

   标准语法格式:

      try{

         被检测的代码

          可能出现异常的代码

      }catch(异常类名字  变量){

         异常的处理代码,可以处理这个异常

          ,循环,判断,调用方法....

          输出异常信息

      }

      后面代码,可以继续执行

 

    1.  try.catch处理一个异常

      在程序中,运行的时候,只有一个异常发生

    2.  try.catch处理多个异常,平级关系

      平级异常:

        程序中出现的异常,异常类之间没有继承关系,就是平级

      程序中,出现的异常,都是平级关系

      catch处理

    3.  try.catch处理多个异常,上下级关系 

      程序,出现的异常类,具有子类父类的继承关系

      父类 IndexOutOfBoundsException  集合越界

      子类 ArrayIndexOutOfBoundsException  数组越界

    4. try.catch处理多个异常JDK7新特性

      出现目的,减少程序编写

      弊端

      多个catch合并成一个catch,异常必须是平级

4throw throws

1.  throw关键字的用法

     定义方法,如果出现情况,程序不能继续执行,应该在方法内部抛出异常

     throw  new 异常对象

     方法内部有异常,必须处理,否则编译失败

     方法自己处理不了,让调用者处理

 

2.  throws关键字的用法

     定义在方法的声明上, 表明方法中有异常,请调用者处理

     throws 写在声明上,后面写的是异常类名

     方法的调用者,必须处理异常,不处理编译失败

5、编译异常和运行异常

  Java中将异常分成2个类别

  编译时期异常: 调用一个抛出异常的方法,没有对异常处理,直接编译失败

  运行时期异常,和编译无关

 

1. 运行时期异常

     java.lang.RuntimeException 类和他的所有子类

     都是运行时期异常

 

2. 运行时期异常的特点

     方法内部,如果throw抛出的是运行时期异常的话

     方法的声明上,不需要throws表明

     调用者也不能进行处理

 

3. 运行时期异常的设计思想

     在程序的运行期间,运行时期异常是不能发生的,

     如果真的发生运行异常,不要处理,程序必须停下,程序员修改源代码

 

    总结: 出现运行异常,停下程序,改代码,千万不要try catch throws

运行时期异常,一旦发生,后面的程序,没有在执行的意义

6、异常该如何处理

   try catch  throw throws

   自己可以处理,就自己处理

   自己不能处理,抛出去

   使用的是别人的功能,应该try,自己写功能 throws

7finally代码块

   1. 格式:

     try..catch(){} finally{}

     try..finally{}

 

    凡是程序写在finally里面,必须会执行

无论有没有异常,finally 必须执行,使用价值释放资源 (IO)

程序Demo

2.  final,finally finalize 的区别

Afinal是最终的意思。它可以用于修饰类,成员变量,成员方法。

它修饰的类不能被继承,它修饰的变量时常量,它修饰的方法不能被重写。

Bfinally:是异常处理里面的关键字。

它其中的代码永远被执行。特殊情况:在执行它之前jvm退出。System.exit(0);

Cfinalize:Object类中的一个方法。

它是于垃圾回收器调用的方式。

8、自定义异常

JDK的所有的异常类中,能不能将开发中的所有问题,都描述的清楚呢

半径必须大于0,这样的异常,JDK可能已经做好吗

 

 自定义异常的步骤

    规范: 自己写的异常类,类名,后缀必须是Exception

 

必须继承Exception,或者继承RuntimeException

异常类,构造方法,super异常信息,传递给父类构造方法

 

9、子类继承父类的异常处理

子类重写父类方法,如果有异常

   继承后,子类父类中的异常处理

   A: 父类中方法,如果抛出异常,子类重写

      子类方法可以抛,可以不抛

      如果子类抛,不能抛出比父类更大的异常

     

   B: 父类方法,不抛出异常,子类重写

      子类重写后,不能抛出任何异常

      如果,子类调用了一个抛出异常的方法

  子类别无选择,只能try.catch

10File

File类的作用: 将操作系统中的,文件,目录(文件夹),路径,进行对象封装

    提供很多的方法,专门操作文件,目录,和路径

11File类静态成员变量

    都是静态,final修饰

    一共4,每两个一组

    区别:结果数据类型不同,一组是String,一组是char

    看结果是String

 

    static String pathSeparator 与系统有关的路径分隔符

static String separator  与系统有关的名称分隔符

12File类构造方法

1.  File(String path)

     创建File对象时候,传递构造方法,字符串的路径

     E:\workspace\day19

     E:\workspace\day19\.project

     将传递的路径,封装成File类型对象,(调用File类方法,操作路径)

2.  File(String parent,String child)

     传递String类型父路径,String子路径

3. File(File parent,String child)

     传递File类型父路径,String子路径

13File类创建功能

1.  boolean createNewFile()

     创建新文件,创建的是File构造方法中,写的路径

     创建成功返回true,创建失败返回false

    2.  boolean mkdir()

     创建新目录,创建新文件夹,创建的文件夹路径,写在构造方法中

     创建成功返回true,创建失败返回false

     只能创建一级文件夹,不能创建多级文件夹

     boolean mkdirs()

     推荐使用mkdirs()

14File类删除功能

   boolean delete()

   删除File构造方法中封装的路径(文件,文件夹)

   删除成功返回true,删除失败返回false

15File类重命名方法

   boolean renameTo(File dest)

  File对象封装的路径进行重命名

   需要File对象调用.renameTo(传递另一个File对象)

   调用者,数据源,传递另一个File对象,被修改后的

16File类判断方法

  方法的运行结果是boolean

  1.  boolean exists()

   判断File构造方法中封装的路径是不是存在

   如果存在返回true,不存在返回false

  2.  boolean isDircetory()

   判断File构造方法中封装的路径,是不是目录

   是不是文件夹,如果是返回true,不是返回false

  3.  boolean isFile()

    判断File构造方法中封装的路径,是不是文件

   是不是文件,如果是返回true,不是返回false

  4.  boolean isHidden()

   判断File构造方法中封装的路径,是不是隐藏属性

   如果是隐藏属性返回true

  5  boolean isAbsolute()

   判断File构造方法中写的是不是绝对路径

   如果是绝对路径返回true

  6.  boolean canRead()

   判断File构造方法中封装的文件是不是可以被读取

   打开

  7.  boolean canWrite()

   判断File构造方法中封装的文件是不是可以被写入

   修改


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值