作者:季沐测试笔记

原文地址https://www.cnblogs.com/testero/p/15228418.html

博客主页https://www.cnblogs.com/testero

1 异常

  • 异常的概述

    ​ 异常就是程序出现了不正常的情况

  • 异常的体系结构

2 JVM默认处理异常的方式

  • 如果程序出现了问题,我们没有做任何处理,最终JVM 会做默认的处理,处理方式有如下两个步骤:

  • 把异常的名称,错误原因及异常出现的位置等信息输出在了控制台

  • 程序停止执行

3 try-catch方式处理异常

  • 定义格式

    try {
    可能出现异常的代码;
    } catch(异常类名 变量名) {
    异常的处理代码;
    }
  • 执行流程

    • 程序从 try 里面的代码开始执行
    • 出现异常,就会跳转到对应的 catch 里面去执行
    • 执行完毕之后,程序还可以继续往下执行
  • 示例代码

    public class ExceptionDemo01 {
    public static void main(String[] args) {
    System.out.println("开始");
    method();
    System.out.println("结束");
    } public static void method() {
    try {
    int[] arr = {1, 2, 3};
    System.out.println(arr[3]);
    System.out.println("这里能够访问到吗");
    } catch (ArrayIndexOutOfBoundsException e) {
    // System.out.println("你访问的数组索引不存在,请回去修改为正确的索引");
    e.printStackTrace();
    }
    }
    }

4 Throwable成员方法

  • 常用方法

    方法名 说明
    public String getMessage() 返回此 throwable 的详细消息字符串
    public String toString() 返回此可抛出的简短描述
    public void printStackTrace() 把异常的错误信息输出在控制台
  • 示例代码

    public class ExceptionDemo02 {
    public static void main(String[] args) {
    System.out.println("开始");
    method();
    System.out.println("结束");
    } public static void method() {
    try {
    int[] arr = {1, 2, 3};
    System.out.println(arr[3]); //new ArrayIndexOutOfBoundsException();
    System.out.println("这里能够访问到吗");
    } catch (ArrayIndexOutOfBoundsException e) { //new ArrayIndexOutOfBoundsException();
    // e.printStackTrace(); //public String getMessage():返回此 throwable 的详细消息字符串
    // System.out.println(e.getMessage());
    //Index 3 out of bounds for length 3 //public String toString():返回此可抛出的简短描述
    // System.out.println(e.toString());
    //java.lang.ArrayIndexOutOfBoundsException: Index 3 out of bounds for length 3 //public void printStackTrace():把异常的错误信息输出在控制台
    e.printStackTrace();
    // java.lang.ArrayIndexOutOfBoundsException: Index 3 out of bounds for length 3
    // at com.test_02.ExceptionDemo02.method(ExceptionDemo02.java:18)
    // at com.test_02.ExceptionDemo02.main(ExceptionDemo02.java:11) }
    }
    }

5 编译时异常和运行时异常的区别

  • 编译时异常

    • 都是Exception类及其子类
    • 必须显示处理,否则程序就会发生错误,无法通过编译
  • 运行时异常

    • 都是RuntimeException类及其子类
    • 无需显示处理,也可以和编译时异常一样处理

6 throws方式处理异常

  • 定义格式

    public void 方法() throws 异常类名 {
    
    }
  • 示例代码

    public class ExceptionDemo {
    public static void main(String[] args) {
    System.out.println("开始");
    // method();
    try {
    method2();
    }catch (ParseException e) {
    e.printStackTrace();
    }
    System.out.println("结束");
    } //编译时异常
    public static void method2() throws ParseException {
    String s = "2048-08-09";
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    Date d = sdf.parse(s);
    System.out.println(d);
    } //运行时异常
    public static void method() throws ArrayIndexOutOfBoundsException {
    int[] arr = {1, 2, 3};
    System.out.println(arr[3]);
    }
    }
  • 注意事项

    • 这个throws格式是跟在方法的括号后面的
    • 编译时异常必须要进行处理,两种处理方案:try...catch …或者 throws,如果采用 throws 这种方案,将来谁调用谁处理
    • 运行时异常可以不处理,出现问题后,需要我们回来修改代码

7 throws和throw的区别

8 自定义异常

  • 自定义异常类

    public class ScoreException extends Exception {
    
        public ScoreException() {}
    
        public ScoreException(String message) {
    super(message);
    } }
  • 老师类

    public class Teacher {
    public void checkScore(int score) throws ScoreException {
    if(score<0 || score>100) {
    // throw new ScoreException();
    throw new ScoreException("你给的分数有误,分数应该在0-100之间");
    } else {
    System.out.println("成绩正常");
    }
    }
    }
  • 测试类

    public class Demo {
    public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    System.out.println("请输入分数:"); int score = sc.nextInt(); Teacher t = new Teacher();
    try {
    t.checkScore(score);
    } catch (ScoreException e) {
    e.printStackTrace();
    }
    }
    }

Java(25)常见异常整理的更多相关文章

  1. JAVA中常见异常小结

    1.java.lang.ArithmeticException 算术运算异常,例如除数为0,所以引发了算数异常 2.Java.lang.StringIndexOutOfBoundsException: ...

  2. 开通博客第一天 (先发一些android(java)常见异常信息

    常见异常: java.lang.AbstractMethodError抽象方法错误.当应用试图调用抽象方法时抛出. java.lang.AssertionError断言错.用来指示一个断言失败的情况. ...

  3. java中常见异常汇总(根据自己遇到的异常不定时更新)

    1.java.lang.ArrayIndexOutOfBoundsException:N(数组索引越界异常.如果访问数组元素时指定的索引值小于0,或者大于等于数组的长度,编译程序不会出现任何错误,但运 ...

  4. java 中常见异常

    1. Java.lang.NullPointerException  这个异常大家肯定都经常遇到,异常的解释是"程序遇上了空指针",简单地说就是调用了未经初始化的对象或者是不存在的 ...

  5. JAVA中常见异常类

    1. java.lang.nullpointerexception 这个异常大家肯定都经常遇到,异常的解释是"程序遇上了空指针",简单地说就是调用了未经初始化的对象或者是不存在的对 ...

  6. Java之常见异常

    package com.atguigu.java1; import java.io.File;import java.io.FileInputStream;import java.util.Date; ...

  7. java的常见异常与错误总结

    算术异常类:ArithmeticExecption 空指针异常类:NullPointerException 类型强制转换异常:ClassCastException 数组负下标异常:NegativeAr ...

  8. java中常见异常总汇,附解释

    Java Exception: 1.Error 2.Runtime Exception 运行时异常3.Exception 4.throw 用户自定义异常 异常类分两大类型:Error类代表了编译和系统 ...

  9. WCF之常见异常整理(不断更新中...)

    系统Win7   IIS7.5 异常1.找不到具有绑定 NetTcpBinding 的终结点的与方案 net.tcp 匹配的基址.注册的基址方案是 [http]. 产生原因:网站没有配置net.tcp ...

随机推荐

  1. Blazor+Dapr+K8s微服务之基于WSL安装K8s集群并部署微服务

         前面文章已经演示过,将我们的示例微服务程序DaprTest1部署到k8s上并运行.当时用的k8s是Docker for desktop 自带的k8s,只要在Docker for deskto ...

  2. 两种github action 打包.Net Core 项目docker镜像推送到阿里云镜像仓库

    两种github action 打包.Net Core 项目docker镜像推送到阿里云镜像仓库 1.GitHub Actions 是什么? 大家知道,持续集成由很多操作组成,比如抓取代码.运行测试. ...

  3. GUI容器之Frame

    Frame public class MyFrame { public static void main(String[] args) { //创建一个Frame对象 Frame frame = ne ...

  4. 干货:详解C++ sort函数的cmp参数!

    学算法的第一天你在学冒泡.桶排 在你还没搞明白快排和归并的时候 你已经学到了数据结构最后的堆排序和希尔排序 可以说排序是很多竞赛生的噩梦-- 于是它诞生了 void std::sort() Sort ...

  5. HashSet的存储原理

    HashSet的底层用哈希散列表来存储对象(默认长度为16的数组),假如: Set set=new HashSet(); set.add(obj); 内部存储过程为:定义h=obj.hashCode, ...

  6. container of()函数简介

    在linux 内核编程中,会经常见到一个宏函数container_of(ptr,type,member), 但是当你通过追踪源码时,像我们这样的一般人就会绝望了(这一堆都是什么呀? 函数还可以这样定义 ...

  7. 将rgb表示方式转换为hex表示方式-------------将hex表示方式转换为rgb表示方式(这里返回rgb数组组合)

      /**  * kevin 2021.1.4  * 将rgb表示方式转换为hex表示方式  * @param {string} rgbColor 传过来的hex格式的颜色  * @returns { ...

  8. SpringMVC执行流程总结

    SpringMVC 执行流程: 用户发送请求至前端控制器 DispatcherServlet DispatcherServlet 收到请求调用处理映射器 HandlerMapping 处理映射器根据请 ...

  9. 【PHP数据结构】树和二叉树

    树的概念其实非常地广泛,也非常地常见,大家见到这个词千万不要惊慌,因为真的每天你都能见到树结构在我们生活中的应用.比如说公司的组织结构: 另外像我们家里的族谱,或者说是我们的家庭结构,也是一个典型的树 ...

  10. Dapr实战(二) 服务调用

    服务调用是什么 在分布式应用程序中的服务之间进行调用会涉及到许多挑战. 例如: 维护其他服务的地址. 如何安全地调用服务. 在发生短暂的 暂时性错误 时如何处理重试. 分布式应用程序调用链路追踪. 服 ...