zoukankan      html  css  js  c++  java
  • JAVA异常处理

    异常的分类

    错误:
    error 这是无法throw的问题,如内存溢出
    异常:
    Exception 编译期问题,可以throw或者try catch
    RuntimeExeption 运行期间出现的问题,可以throw或者try catch

    运行期异常的分类:
    1、
    运行期异常可以是由于数据逻辑错误产生,举例:空指针异常。如果没有提前定义,系统在识别异常后一定会中断程序。如果提前写try datch可以使程序继续运行。
    2、
    运行期异常是由程序员自定义的。比如提前预知了某个异常出现,在异常中添加注释方便排查问题。也可以是人为地定义一些正常的情况为异常,强制中断程序(说实话我实在想不通为什么不直接写return难道有人就是觉得红色字体比较好看???这里边有些是IOException等等都是有分类的,分类有什么用?不知道!!!)自定义exception以后不能再往下继续写代码了。
    在这里插入图片描述

    在这里插入图片描述以上展示了自定义异常运行的结果

    异常的定义

    关键字throw的用法
    必须写在方法内部
    必须是exception的子类
    如果不是runtime exception必须在方法后面写throws或者try catch

    相关方法:objects.requireNonNull可以判断是否制定元素为空并且抛出异常

    throws
    异常抛出。如果某个方法有“throws”小尾巴,那么调用这个方法的方法,最好是写个try catch,或者继续thows。如果在整个方法调用的过程中没有任何一个方法写try catch,到最后java就会进行中断处理。

    try catch
    注意,每个try可以有多个catch。如果每个方法里有多个异常,可以分别使用多个catch语句来捕获。如果这些异常之间存在子父类关系,必须把子类写在前面,父类写在后面。或者干脆就不要写子类,直接写父类。
    最省事的方法就是写

    catch (Exception e) 
    

    这个语句会自动捕获所有的异常

    三种打印异常的方法

    有三种异常打印的方法,第一种是输出红色字体,第二和第三种本质上都是生成字符串,但是字符串附带的信息不同。

    public class Lesson {
        public static void main(String[] args)
                 {
                     try {
                         a();
                     } catch (Exception e) {
                         System.out.println("第一种打印异常的方法");
                         e.printStackTrace();
                         System.out.println("第二种打印异常的方法"+e.getMessage());
                         System.out.println("第三种打印异常的方法"+e.toString());
                     }
        }
        public static void a() throws Exception {
            System.out.println("程序开始");
            throw new Exception("自定义异常产生的原因");
        }
    }
    

    在这里插入图片描述

    gre

    finally语句表示不管是否出现异常都要执行。实际上,只要你写在try语句结束后,就能实现这个效果。所以finally事实上仅仅用于处理IO流。该问题后边补充。证据如下。

    public class Lesson {
        public static void main(String[] args)
                 {
                     try {
                         a();
                     } catch (Exception e) {
                     }finally{
                         System.out.println("finally模块执行");
                     }
                     System.out.println("后续代码");
        }
        public static void a() throws Exception {
            throw new Exception("自定义异常产生的原因");
        }
    }
    

    在这里插入图片描述

    在try语句中定义的变量在finally中也无法应用

    在这里插入图片描述

  • 相关阅读:
    静态资源放置于独立域名之下
    一个程序学习String类的所有常用方法
    Myeclipse的workspace配置文件浅谈
    使用myeclipse自带的tomcat发布web功能怎么访问
    Java陷阱之assert关键字
    Java集合Map接口与Map.Entry学习
    Java中List和ArrayList的区别
    手动命名名字空间打包以及调用
    命令行java -classpath 的使用
    maven 环境变量设置和Java maven工具配置 on windows 7
  • 原文地址:https://www.cnblogs.com/ryyy/p/14227852.html
Copyright © 2011-2022 走看看