• Java学习笔记-6.Java异常处理


    一、异常简介

    1.异常:程序在运行过程中有时会出现一些意外的情况导致程序退出的情况

    2.一个异常是由一个对象来表示的,所有的异常都直接或间接地继承自Throwable接口

       Throwable接口是类库java.lang包中的一个类,它派生出两个子类:Error 和 Exception

      (1)Error类主要用来描述一些Java运行时系统内部的错误或资源枯竭导致的错误,此类错误一般由系统进行处理,一般程序本身不需要捕获和处理

      (2)Exception类分为RuntimeException异常 和 非RuntimeException异常

              RuntimeException异常:属于程序缺陷异常,是设计或实现上的问题,此类问题应避免而且可以不捕获,但为保证程序在出错后依然可以执行,在开发时最好用try…catch处理

              非RuntimeException异常:由程序外部问题引起的异常,在语法上要求必须处理,否则不能通过编译,称为受检异常

    3.常用异常类(都继承于Exception类,这些异常类各自代表了一种特定的错误)

    系统定义的运行异常 异常对应的系统运行错误
    ClassNotFoundException 未找到相应的类
    ArrayIndexOutOfBoundsException 数组越界
    FileNotFoundException 未找到指定的文件或目录
    IOException 输入、输出错误
    NullPointException 引用空的尚无内存空间的对象
    ArithmeticException 算术错误
    InterruptedException 一线程被其他线程打断
    UnknownHostException 无法确定主机的IP地址
    SecurityException 安全性的错误
    MalformedURLException URL格式错误

    4.用户自定义异常类(必须继承自Throwable 或 Exception类(建议))

      格式:

    class MyException extends Exception {
        public MyException() {
            super();
            ...
        }
        public MyException(String s) {
            super(s);
            ...
        }
        public String toString() {
            return("...");
            ...
        }
    }

    二、Java异常处理机制

    1.抛出和声明异常:Java程序在运行时如果引发了一个可以识别的错误,就会产生一个与该错误相应的异常类的对象,这个过程叫做异常的抛出

       抛出异常格式:

    修饰符 返回类型 方法名 (参数列表) throws 异常类名列表 {    //声明异常

        …

        throw 异常类名;    //抛出异常

        …

    }

       当方法抛出异常后,该方法就不能返回到其调用者,而是进入异常处理块中

    2.捕捉异常:接受被抛出的异常对象

    具体格式:

    try {
        //接受监视的程序块,在此区域内发生
        //的异常,由catch中指定的程序处理
    } catch (异常类名1 异常形式参数名) {
        //处理异常
    } catch (异常类名2 异常形式参数名) {
        //处理异常
    }
    ...
    finally {
        //最终处理,每次执行的代码
    }

    注意:(1)虽然Exception捕捉的范围最大,不管出现任何异常时都可以直接使用Exception进行处理,但是多个异常最好分别进行捕获,而不是直接使用Exception捕获全部异常

             (2)安排多个异常的多个catch语句顺序时,常见异常应放在前面

             (3)捕获异常范围小的异常必须放在捕获范围大的异常之前,否则程序编译会出错

             (4)finally语句为异常处理提供一个统一的出口,无论try所指定的程序块中是否抛出异常,也无论catch语句的异常类型是否与所抛出的异常类型匹配,finally所指定的代码都要被执行,它提供了统一的出口

             (5)通常在finally语句中可以进行资源的清除工作,如关闭打开的文件和关闭数据流等

  • 相关阅读:
    异或运算实现两数交换
    安装Keepalived namespaces.c:187: error: ‘SYS_setns’ undeclared (first use in this function)
    安装keepalived OpenSSL is not properly installed on your system. !!!
    jackson json转实体对象 com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException
    solr集群Server refused connection at: http://127.0.0.1:6060/solr/ego 注册zookeepr自动使用内网ip
    Solr java.sql.SQLException: null, message from server: "Host 'xxx' is not allowed to connect to this MySQL server
    Jackson中@JsonProperty等常用注解
    java.lang.ClassNotFoundException: XXX (no security manager: RMI class loader disabled)
    ActiveMQ学习总结------Spring整合ActiveMQ 04
    为什么嵌入式开发用memcpy()而不用strncpy()
  • 原文地址:https://www.cnblogs.com/trj14/p/4297565.html
Copyright © 2020-2023  润新知