5.13 异常

1.异常定义:就是在程序的运行过程中所发生的不正常事件,它会中断正在运行的程序

2.if-else来解决异常问题的弊端:

  1.代码臃肿

  2.程序员要花很大精力“堵漏洞”

  3.程序员很难堵住所有“漏洞”

3.异常处理 定义:

   异常处理机制就像是我们对平时可能会遇到的意外情况,预计想好了一些处理的方法.也就是说,在程序执行代码的时候,万一发生异常,程序会按照预定的处理方法对异常进行处理,处理完毕以后,程序继续进行.

4.Java的异常处理是通过5个关键字来实现的:try、catch、 finally、throw、throws.

    try:执行可能产生异常的代码

    catch:捕获异常

    finally:无论是否发生异常,代码总能执行

    throws:声明方法可能要抛出的各种异常

    throw:手动抛出异常

5.try-catch

  1.正常运行

  public void method(){

  try {

        // 代码段(此处不会产生异常)

  } catch (异常类型 ex) {

       // 对异常进行处理的代码段

  }

  // 代码段

  }

  2.使用try-catch块的三种情况

    正常;出现异常;异常类型不匹配

  3.catch块中处理异常

    1,加入自定义信息;

    2,调用方法输出异常信息 e.printStackTrace()

    4.异常对象常用的方法

      void printStackTrace();  输出异常的堆栈信息

      String getMessage();  返回异常信息描述字符串,是printStackTrace()输出信息的一部分

6.异常常见类型

  异                    

  Exception                  异常层次结构的父类

  ArithmeticException          算术错误情形,如以零作除数

  ArrayIndexOutOfBoundsException   数组下标越界

  NullPointerException         尝试访问 null 对象成员

  ClassNotFoundException       不能加载所需的类

  IllegalArgumentException     方法接收到非法参数

  ClassCastException         对象强制类型转换出错

  NumberFormatException  数字格式转换异常,如把"abc"转换成数字

7.try-catch块后加入finally块

  1.是否发生异常都执行

  2.不执行的唯一情况

 

8.存在return的try-catch-finally块

  public void method(){

  try {

       // 代码段 1

       // 产生异常的代码段 2

  } catch (异常类型 ex) {

       // 对异常进行处理的代码段3

       return;

  }finally{

        // 代码段 4

  }

  }

9.引发多种类型的异常

  1.排列catch 语句的顺序:先子类后父类

  2.发生异常时按顺序逐个匹配

  3.只执行第一个与异常类型匹配的catch语句

10.方法体中出现异常解决:

  1.调用者处理异常

    try {

    divide();

     } catch (Exception e) {

    e.printStackTrace();

   }

  2.调用者继续声明异常

    public static void main(String[] args) throws Exception {

     divide();

    }

    }

11.日志(log)

  主要用来记录系统运行中一些重要操作信息

  便于监视系统运行情况,帮助用户提前发现和避开可能出现的问题,或者出现问题后根据日志找到原因

12.日志分类

  SQL日志、异常日志、业务日志

13.log4j是一个非常优秀的开源日志记录工具

  控制日志的输出级别

  控制日志信息输送的目的地是控制台、文件等

  控制每一条日志的输出格式

  14.使用log4j记录日志步骤

    1>在项目中加入log4j的JAR文件

     2>创建log4j.properties文件

    3>配置日志信息

    4>使用log4j记录日志信息

15.throws和throw区别:  

  1.作用部位不同: throw用于程序中抛出异常,throws用于声明在该方法内抛出异常

  2.使用位置不同: throw位于方法体内部,可以作为单独语句使用,throws必须跟在方法参数列表的后面,不能单独使用

  3.内容不同: throw抛出一个异常对象,而且只能是一个,throws后面跟异常类,而且可以跟多个异常类.

16.异常分类:

  1.error与exceptio的区别:

    error:表示紧靠程序本身无法恢复的严重错误,无法解决.

    exception:是由java应用程序抛出和处理的非严重错误,是程序员可以解决的错误

  2.运行时异常和checked异常的区别

    运行时异常:包括runtimeexpection及其所有子类,不要求程序必须对他们处理

    checked表示非运行异常: 除了运行时异常外的其他有expection继承的异常类

     对于异常分为两种:检查异常和非检查异常(运行异常)

        检查异常:编译时被检测的异常(try和catch),编译不通过,检查语法(thow和thows配套使用)

        非检查异常:编译时不被检查的异常

      主要表现在以下两个方面 :

        (1)如何定义方法

        (2)如何处理抛出的异常

posted @ 2020-05-13 19:45  樱桃小丸子!!  阅读(111)  评论(0编辑  收藏  举报