zoukankan      html  css  js  c++  java
  • 异常

    一:定义

      程序在运行期间,发生的不可预测的事件,他阻止了我们的程序正常运行;

    二:异常处理机制

      在我们程序发生异常以后,代码能够按照我们实现设计的顺序继续执行;

      处理方式分为两种:

        01.在方法体内使用try{}catch{}finally{}代码处理;

        02.在方法体内throw抛出异常,在方法参数列表后面用throws声明异常;

    三:异常的分类:

      01.运行时异常  都是 RuntimeException 类的子类,编写程序是可以不处理;

      02.受查异常 是Exception类的直接子类,编写代码是需要处理;

      所有的异常和错误都是Throwable的子类。

      03.异常链的使用:

        把我们捕获的异常信息包装成一个新的异常,继续抛出!新异常中记录了异常的原始信息,便于我们找到异常的根本原因:

    异常链案例:

     1 public class LinkDemo {
     2     // main方法
     3     public static void main(String[] args) {
     4         try {
     5             firstException();
     6         } catch (SQLException e) {
     7             e.printStackTrace();
     8         }
     9     }
    10     // 第1个异常
    11     private static void firstException() throws SQLException {
    12         try {
    13             secondException();
    14         } catch (IOException e) {
    15             e.printStackTrace();
    16             throw new SQLException("第1个异常", e);
    17         }
    18     }
    19     // 第2个异常
    20     private static void secondException() throws IOException {
    21         try {
    22             thirdException();
    23         } catch (InputMismatchException e) {
    24             e.printStackTrace();
    25             throw new IOException("第2个异常", e);
    26         }
    27     }
    28     // 第3个异常
    29     private static void thirdException() throws InputMismatchException {
    30         throw new InputMismatchException("根本的异常");
    31     }
    32 }
    LinkDemo

    常用异常举例:

    IOException        IO流异常
    FileNotFoundException   文件没找到
    ArithMeticException      算术异常
    InputMismatchException    输入类型不匹配
    NullPointerException       空指针异常
    ClassNotFoundException     没有找到类
    ClassCastException        类型转换异常

    四:自定义异常

      异常类都是Throwable的子类,一般继承RunnableException,Exception类就可以了。

    案例:

     1 public class MyException extends RuntimeException {
     2     public MyException() {
     3         super();
     4     }
     5     public MyException(String message) {
     6         super(message);
     7     }
     8     public MyException(String message, Throwable cause) {
     9         super(message, cause);
    10     }
    11     public MyException(Throwable cause) {
    12         super(cause);
    13     }
    14 }
    MyException

    五:五个关键字

      try  catch  finally  throw  throws

    try(尝试):

      01.不能单独使用,必须和catch/finally联合使用;

      02.存放可能出现 异常的代码;

      03.如果try代码块中出现了异常,回去匹配catch代码块对应的异常类型,

         如果没有匹配的类型,则走finally代码块。.

    catch(捕获):

      01.可以有多个catch块,每个catch都能捕获一个类型的异常;

      02.多个catch块捕获的异常不能重复;

      03.多个catch块的类型必须是从小到大排列;

      04.如果多个catch块都能匹配,默认使用第一个匹配的;

      05.如果try中的代码没有出现异常,则catch代码块被忽略;

      06.每个代码块中的属性都是私有的;

    finally(最终):

      01.无论代码是否发生异常,都会执行finally代码块;

      02.如果遇到了System.exit(0);或者System.exit(^0);,则不会执行finally;

      03.如果try代码块中出现了return,也是先执行finally,再跳出方法。

      04.finally中经常书写关闭流或者断开数据库连接资源的方法代码;

    throw(抛出异常):

      01.语法 throw new  异常类型(异常信息);

      02.异常信息必须是Exception或者其子类;

      03.throw只能出现在方法体内,且只能抛出一个异常

      04.异常抛出以后,需要选择一种异常处理方式处理;

      05.如果使用声明异常的方式处理异常,则抛出的异常类型必须是声明的异常本身或者其子类。

    throws(声明异常):

      01.语法 :  throws 异常类型1,异常类型2......

      02.定义在方法参数列表之后,可以声明多个异常类型;

      03.throws所在的方法不处理异常,方法的调用者处理异常;

      04.如果是在main方法中使用throws,则是JVM(java虚拟机)来处理异常(不建议使用该方法);

  • 相关阅读:
    对javascript匿名函数的理解(透彻版)
    使用Emmet(前身Zen Coding)加速Web前端开发
    实现IE6-Ie8媒体查询
    css3常用伪类选择器
    ScriptManager,updatepanel中按钮事件不兼容IE10以后版本
    UpdatePanel中弹出不能弹出消息
    页面缓冲显示正在加载图片
    练习JsonJquery查找数据
    Ajax练习:使用jQuery验证用户名是否存在
    使用Android SDK中的WebView
  • 原文地址:https://www.cnblogs.com/ak666/p/8042671.html
Copyright © 2011-2022 走看看