`
java_hanyu
  • 浏览: 71336 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

core java学习笔记(十)

阅读更多

异常
当错误发生的时候减少损失,提高容错性

1、异常的分类

Throwable有两个子类:Error和Exception。
一个Error对象表示一个程序错误,指的是底层的、低级的、不可恢复的严重错误。此时程序一定会退出,因为已经失去了运行所必须的物理环境。
对于Error错误我们无法进行处理,因为我们是通过程序来应对错误,可是程序已经退出了。
我们可以处理的Throwable类中只有Exception类的对象(例外/异常)。

                       Throwable
                          |
                  ------------------
                  |                 |
              Error             Exception
             错误      |
   非常严重                  |                   
          不能处理           --------------
                            |              |
                  RuntimeException      非Runtime异常
                  未检查异常             已检查异常
                  由于程序员疏忽造成的    不可避免的
                  可避免的               必须处理
                  可处理,可不处理


2、异常的产生和传递
  throw  new一个异常对象;   ---表示抛出一个异常
  throw new NullPointerException();
  相当于return,函数返回上一级

 传递:
 沿着方法调用链的顺序反向传递!  (异常抛出)mc---->mb---->ma----->main----->Java虚拟机(停止运行)
 当一个方法中出现异常,而没有作处理,则以异常对象为返回值返回调用处(逐级传递)
 异常返回给虚拟机时,虚拟机终止退出,程序结束

3、异常的处理
  (1)声明抛出 
       是方法声明的第五部分  throws+异常名字(多个异常用“,”分隔)
       出现异常,不处理,抛给上一级处理
       并且子类抛出异常的范围不能比父类抛出异常的范围更宽。
  (2)捕获异常
       try - catch
       try - catch - finally
       try - finally     //不捕获异常,当异常发生,返回上一级之前,要运行finally中的代码
       以上语句可以嵌套

       返回类型 方法名(参数){
  try{
   可能出错语句
   正常语句
  }catch(异常类 e){  //某种异常的引用
   对异常的处理
  }
  正常语句  
 }

       捕获多个异常:
       程序任何时刻只发生一个异常
 可对产生的每个异常分别捕捉,也可由同一异常进行处理,前提是这个共用的异常应该是所有这些该被捕获的异常的父类,但是,对于非受查异常不成立
 当try后面有多个语句块时,注意catch异常的顺序,子类必须放在父类的前面

       finally关键字

 无论异常是否发生,一定会执行的代码,可放在finally块内。
 要点:没有异常产生时:正常执行try{}catch(){} —> 进入finally语句块 —> 方法中剩余代码
      有异常产生时(捕找到) —> 进入catch处理 —> 进入finally语句块 —> 方法中剩余代码
      有异常产生时(没捕找到)—> 进入finally语句块 —> 离开方法

       一般finally写一些释放资源的代码

       在try - catch 块中遇到System.exit(0);或断电,则不会执行finally中的代码
 
       Throwable有一个message属性。在使用catch的时候可以调用:
       Catch(IOException e){System.out.println(e.getMessage())};  //打印出来的是创建(throw new)异常对象的时候,给定的参数
       Catch(IOException e){e.printStackTrace()};                 //打印堆栈追踪信息
       以上两条语句都是可以打印出错的过程信息。告诉我们出错类型所历经的过程,在调试的中非常有用。

开发中的两个道理:
①如何控制try的范围:根据操作的连动性和相关性,如果前面的程序代码块抛出的错误影响了后面程序 代码的运行,那么这个我们就说这两个程序代码存在关联,应该放在同一个try中。
②对已经查出来的异常,有throw(消极)和try catch(积极)两种处理方法。
对于throws把异常抛到try catch能够很好地处理异常的位置(即放在具备对异常进行处理的能力的位置 )。如果没有处理能力就继续上抛。


4、自定义异常
   (1)继承Exception类
   (2)构造方法:
 不带参数的构造方法
 带参数的构造方法:参数指出错误性质,super(message);把参数传递给父类构造异常
 
 当我们自己定义一个异常类的时候必须使其继承excepiton或者RuntimeException。
 
 throw和throws的区别:

 throw后跟异常对象 ,写在方法体内,throw是一个语句,用来做抛出异常的功能。后面的代码不会再运行。

 throws用在方法的声明中,在参数表之后函数体之前。而throws是表示如果下级方法中如果有异常抛出,那么本方法不做处理,继续向上抛出。
 throws后跟的是异常类型。
 
 例:pulbic Animal(String name,int legs) throws Exception{
  this.name=name;
  if(legs<0||legs%2!=0){
   throw new Exception("错误的腿的条数");
  }
  this.legs=legs;
    } 


 注意:方法的覆盖中,如果子类的方法抛出的异常是父类方法抛出的异常的父类型,那么编译就会出错:子类无法覆盖父类。
 结论:子类方法不可比父类方法抛出更多的异常。子类抛出的异常或者与父类抛出的异常一致,或者是父类抛出异常的子类型。或者子类型不抛出异常。
 如果父类型无throws时,子类型也不允许出现throws。此时只能使用try catch。

断言:
 断言是一种调试工具(assert) 1.4增加的

 其后跟的是布尔类型的表达式,如果表达式结果为真不影响程序运行。如果为假系统出现低级错误,在屏幕上出现assert信息。
 Assert只是用于调试。在产品编译完成后上线assert代码就被删除了。

到此JAVA第一部分结束了


第二部分API:   GUI 图形界面
        Thread  多线程
       I/O  (文件/网络)
        net  网络编程

第三部分:JDK5.0的新特性


第六章串讲

 1、修饰符   
 2、接口
    接口                                           抽象类

  没有构造方法                                  有构造方法
  没有非抽象方法                                可以有非抽象方法
  接口中所有的属性都是static final              没有该限制
  方法默认访问权限是pulbic的                    没有该限制

    接口的多态
    为什么用接口:1、为了解决JAVA不能多继承的问题  2、可以把标准的制定者与标准的实现者分离

 3、内部类

  为什么使用内部类:1、缩小命名空间
      2、现实中有这样的需求,B类对象的存在以A类对象的存在为前提。(A类是外部类,B类是内部类)
      3、B类中访问到A类私有成员

 4、反射

 5、集合
  1、集合框架
   会用:1、选择哪种 2、添加、删除、循环遍历,获得

  2、 了解每一种集合类型底层数据结构和存储方式
      HashSet 添加元素的规则
      对我们覆盖hashCode 和 equals 方法有何指导意义

 6、包装类   记住金三角

小知识点:
 1、equals(),toString(),hashCode()这些方法的覆盖
 2、main()方法的参数
 3、String 和 StringBuffer

分享到:
评论

相关推荐

    CoreJava学习笔记

    ### CoreJava学习笔记 #### 一、JAVA特点与运行原理 **JAVA特点:** 1. **简单性**:Java的设计者们将C++语言中许多不易理解和容易混淆的部分去除,使得Java更容易理解与掌握。 2. **面向对象**:Java几乎一切都...

    达内core_java学习笔记

    Java是世界上最流行的编程语言之一,...以上就是“达内Core Java学习笔记”中涉及的主要知识点。通过深入学习和实践,初学者可以逐步建立起坚实的Java编程基础,并为进一步学习Java的高级特性和框架打下坚实的基础。

    corejava学习笔记

    Java是一种广泛使用的面向对象的编程语言,其基础知识构成了"Core Java"的学习内容。在学习Java时,遵循"多花时间、多动手、多问题"的原则至关重要,因为理论理解与实践操作相结合能更好地掌握知识。 1. **Java语法...

    Java学习笔记及心得

    ### Java学习笔记及心得知识点详细解析 #### 标题:Java学习笔记及心得 #### 描述:Core Java 学习笔记及心得 pdf格式可打开。涵盖了java的基础入门知识,非常适合自学的及想深入学习理解的同学。 #### 标签:...

    Core Java 学习笔记

    《Core Java》学习笔记。 我把自己的笔记都以注释的形式写在代码里面了,这样方便理解。 尽管有些部分被标记为“已完成”,但实际上以后说不定我还会折返回来进行修改或者添加一些注释。 当然如果你有什么不理解...

    corejava学习笔记.doc

    Java是一种由Sun Microsystems在1995年推出的高级编程语言,现由Oracle公司维护。...以上就是Core Java学习笔记的主要内容概述,涵盖了从基础语法到高级特性的广泛知识,为深入理解和应用Java打下了坚实的基础。

    core java 学习笔记

    这篇学习笔记主要讨论了Java集合框架,包括Collection、List、Set和Map四大接口以及它们的相关方法。 首先,Collection是所有集合类的顶级接口,它定义了一些基本的操作,如添加元素(add)、获取元素数量(size)、...

    达内java学习笔记全套

    【Java学习笔记全套】是针对Java编程语言的一套全面学习资料,涵盖了Unix操作系统基础、SQL数据库操作、核心Java编程、Hibernate持久化框架、以及Spring框架等多个关键知识点。这些笔记旨在帮助初学者系统地掌握Java...

    CoreJava学习笔记.doc

    《CoreJava学习笔记》 Java,作为一种广泛使用的高级编程语言,以其独特的特性和优势深受开发者喜爱。本学习笔记旨在深入浅出地介绍Java的核心概念,帮助初学者快速掌握这一强大的工具。 1. Java特点 Java语法...

    学习笔记 java\CoreJava笔记\CoreJava_day12

    在Java编程语言中,SortedSet接口是Set接口的一个子接口,它添加了对集合元素排序的能力。SortedSet接口要求其实现类必须维护元素的排序顺序,这种顺序可以是元素的自然顺序(即元素自身可比较),也可以是通过提供...

    达内COREJAVA学习笔记.doc

    ### 达内COREJAVA学习笔记知识点详述 #### 一、Java版本与平台概述 - **J2SE**: Java Standard Edition,即Java标准版,针对桌面应用开发。 - **JAVA SE**: 指的是Java SE 5.0,发布于2004年,增加了泛型、枚举等...

    java学习笔记 达内笔记(经典)

    (二)面向对象技术总结.pdf (三)corejava高级特性总结 (四)接口学习总结 (五)异常和内部类 (六)集合框架学习总结 (七)GUI和AWT事件模型 (八)多线程学习总结 (九)输入输出流学习总结 (十)网络编程学习总结

    学习笔记 java\CoreJava笔记\CoreJava_day11

    CoreJava_day11的学习笔记主要涵盖了集合框架,特别是关于List、Set和Map接口,以及ArrayList、Vector和LinkedList等具体实现类的知识点。 首先,集合框架是用来存放对象的对象,它提供了一组接口和类,使得我们...

    学习笔记 java\CoreJava笔记\CoreJava_day06

    在Java编程语言中,继承是面向对象编程的一个关键特性,它允许子类继承父类的属性和方法,从而实现代码的复用和扩展。在Java中,类的继承是单继承的,即一个子类只能有一个直接父类,但可以通过接口实现多继承的效果...

    java学习笔记(corejava)部分.rar

    这份"java学习笔记(corejava)部分.rar"文件很显然是针对Java初学者或者希望巩固基础知识的开发者准备的。下面我们将深入探讨Java Core的一些关键知识点。 1. **Java基础**:Java是一种面向对象的编程语言,其设计...

    java学习笔记 自己的笔记都以注释的形式写在代码里面

    java学习笔记 简介: java 学习笔记。 我把自己的笔记都以注释的形式写在代码里面了,这样方便理解。 尽管有些部分被标记为“已完成”,但实际上以后说不定我还会折返回来进行修改或者添加一些注释。 当然如果你...

    CoreJava卷一学习笔记

    自己学习corejava核心技术卷一时的学习笔记和心得,提出的一些问题

Global site tag (gtag.js) - Google Analytics