作者:季沐测试笔记

原文地址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. BUUCTF-[CISCN2019 总决赛 Day2 Web1]Easyweb

    BUUCTF-[CISCN2019 总决赛 Day2 Web1]Easyweb 就给了一个这个... 先打上robots.txt看看 发现有源码备份,但不是index.php.bak... 看源码发现 ...

  2. Python 利用GDAL对图像进行几何校正

    原文链接:https://blog.csdn.net/qq_27045589/article/details/81062586 一.几何校正方法 图像校正本质是建立一种从原始图像行列号到某种投影的数学 ...

  3. Python - 面向对象编程 - 三大特性之多态

    前置知识 封装 详解文章:https://www.cnblogs.com/poloyy/p/15203989.html 封装根据职责将属性.方法封装到一个抽象的类中 定义类的准则-封装 继承 详解文章 ...

  4. Python - typing 模块 —— Optional

    前言 typing 是在 python 3.5 才有的模块 前置学习 Python 类型提示:https://www.cnblogs.com/poloyy/p/15145380.html 常用类型提示 ...

  5. Filter案例之登录验证

    一.登录验证,权限控制 1.需求分析 其中,登录有关的资源被访问时要直接放行,不然会死循环: 2.代码实现

  6. k8s 部署elasticsearch报 max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

    1.由于登不上云的节点 不采用修改节点配置的方式 修改部署的stateful 加上 initContainers 它和 containers 同一层级的 initContainers: - name: ...

  7. 利用 g4l 完整备份和还原Linux系统

    前言: 1.Windows中Ghost由于一系列原因,有不支持分区格式,因此可能无法完整备份Linux. 2.g4l = Ghost for Linux 1.下载g4l https://sourcef ...

  8. mysql数据库备份参数

    我用来实现自动全备份的脚本(可以满足一般有前后版本兼容要求的导出导入操作,我的字符集是latin1): mysqldump.exe -umyusername -pmypass -h localhost ...

  9. TP5更新数据成功,但判断结果不符

    thinkphp的CURD中,使用save方法时会出现一个奇怪的问题,即如果数据没有更新(与原数据相同),返回值判断为false.其实很久之前就发现了这个问题,一度以为是官方代码的问题,但是一直拖延到 ...

  10. Nginx系列(9)- Nginx常用命令

    Linux # 命令需要在Nginx的sbin目录下执行 cd /usr/local/nginx/sbin/ ./nginx #启动./nginx -s stop #停止 ./nginx -s qui ...