Java笔记(10)——异常处理

2023-05-16

1、Java异常

  Java运行时发生异常可以分为两类:

  1. ErrorJVM系统内部错误、资源耗尽等问题产生的异常。
  2. Exception:编程错误或偶然的外在因素导致的。

2、常见的异常

2.1 RuntimeException运行异常

  • 错误的类型转换。
  • 数组下标越界。
  • 空指针访问。

2.2 IOException

3、异常捕获

3.1

  如果知道try中是何种异常,可以用该类异常作为catch中的参数(例如:ArithmeticException),也可以使用其父类(例如:RuntimeException)作为其catch中的参数。但使用与该类无关的异常,catch将不会执行。

try{
	//程序代码
}catch(ExceptionName1 e){
	// Catch块
}catch(ExceptionName2 e){
	// Catch块
}finally { 
	// 无条件执行的语句
}

举例:

try {
   // 放置可能会出现异常的代码
   int j = 10 / 0;
}
// 在try的后面可以有多个catch
catch (ArithmeticException exception){
   System.out.println("0. " + exception.getMessage());
} catch (NullPointerException ex){
   System.out.println("1. " + ex.getMessage());
}catch (ClassCastException e){
   System.out.println("2. " + e.getMessage());
}
// 可以抓住所有catch括号中的异常的子类对象
// 范围大的异常(异常类的父类)要放在异常类的子类的后面
// 放在前面出错
catch (RuntimeException e){
   System.out.println("3. " + e.getMessage());
}

System.out.println("end....");

/*
0. / by zero
end....
*/

3.2

  调用异常对象的成员变量的方法:

  • getMessage():得到有关异常的信息。
  • printStackTrace():用来跟踪异常事件发生时执行堆栈的内容。
public static void main(String[] args) {
    int[] a = new int[]{1, 2, 3, 4};
    try {
        for (int i = 0; i < 6; i++){
            System.out.println(a[i]);
        }
    }catch (ArrayIndexOutOfBoundsException e){
        System.out.println("数组下标越界异常:" + e.getMessage()); // 得到有关异常的信息
        //e.printStackTrace();
    }finally {
        System.out.println("数组下标可能越界。。。");
    }
}
/*
1
2
3
4
数组下标越界异常:4
数组下标可能越界。。。
*/

上述异常,在不捕获的前提下,Java能够自己捕获,并且编译通过。

下面的必须捕获,否则报错。

4、IOException异常捕获

自定义异常

编写应用程序EcmDef.java,接收命令行的两个参数,要求不能输入负数,计算两数相除。
对缺少命令行参数(ArrayIndexOutOfBoundsException)、
除0(ArithmeticException)及输入负数(EcDef 自定义的异常)进行异常处理。
提示:
(1)在主类(EcmDef)中定义异常方法(ecm)完成两数相除功能。
(2)在main()方法中使用异常处理语句进行异常处理。
(3)在程序中,自定义对应输入负数的异常类(EcDef)。
(4)运行时接受参数 java EcmDef 20 10
//args[0]=“20” args[1]=“10”
(5)Interger类的static方法parseInt(String s)将s转换成对应的int值。如int a=Interger.parseInt(“314”); //a=314;

// 需要继承检查时异常 Exception 或 运行时异常 RuntimeException

public class EcDef extends RuntimeException {
    private static final long serialVersionUID = 1L;

    public EcDef(){

    }

    public EcDef(String msg){
        super(msg);
    }
}

public class EcmDef {
    public static void main(String[] args) {
        //快捷键 ctrl + Alt + T  添加try catch 捕获异常
        try {
            int i = Integer.parseInt(args[0]);
            int j = Integer.parseInt(args[1]);
            int ret = ecm(i ,j);
            System.out.println("result = " + ret);
        } catch (NumberFormatException e) { // 参数转换异常
            System.out.println("输入的参数不能转换为INT型。。。");
            e.printStackTrace();
        }catch (ArrayIndexOutOfBoundsException e){
            System.out.println("输入的参数个数不足。。。");
        }catch (ArithmeticException e){
            System.out.println("除数不能为0。。。");
        }catch (EcDef e){
            System.out.println("运算的数不能为负数。。");
            e.printStackTrace();
        }
    }
    public static int ecm(int i, int j){
        if(i < 0 || j < 0){
            throw new EcDef("不能输入负数");
        }
        return  i / j;
    }
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java笔记(10)——异常处理 的相关文章

随机推荐

  • 6-8 求二叉树高度 (20 分)

    本题要求给定二叉树的高度 函数接口定义 xff1a 96 96 96 cpp int GetHeight BinTree BT 其中BinTree结构定义如下 xff1a typedef struct TNode Position type
  • copy outerHTML、python爬取csdn文章、一键打包个人csdn文章保存到本地

    文章目录 1copy outerHTML复制网站源码法1 1复制源码1 2 遇到的问题 2 python爬取CSDN博客文章 xff08 保存为html xff0c txt xff0c md xff09 2 1 安装依赖2 2 完整代码 3
  • android遇到的问题的总结----Activity和fragment之间相互跳转

    一 activity与activity之间跳转 xff1a span class token comment 第一个参数是上下文 span span class token comment 第二个参数是将要跳转的activity span
  • maven项目创建MyBatis教程

    先创建一个新的maven项目 然后把配置文件放pom xml中在刷新导入 span class token operator lt span dependencies span class token operator gt span sp
  • Vue3中axios的使用与封装

    文章目录 一 安装axios二 配置与封装三 引入与使用 一 安装axios span class token function npm span i axios s 二 配置与封装 src aixos request js http js
  • MySQL常见七种通用的Join查询练习题

    准备数据库表 t dept 和 t emp CREATE TABLE 96 t dept 96 96 id 96 int NOT NULL AUTO INCREMENT 96 deptName 96 varchar 30 DEFAULT N
  • MySQL索引分类

    主键索引 xff1a 设定为主键后数据库会自动建立索引 xff0c innodb为聚簇索引 单值索引 xff1a 即一个索引只包含单个列 xff0c 一个表可以有多个单列索引 唯一索引 xff1a 索引列的值必须唯一 xff0c 但允许有空
  • Docker 部署 MySQL 一主多从

    主从复制的原理 xff1a 1 主库 xff1a 创建一个有权访问binlog日志的从库账号 xff0c 配置需要主从复制的库 有写操作时 xff0c 可以将写操作或者写操作之后的数据记录到日志文件中 binlog 通过一个线程通知需要同步
  • Java笔记(8)——重载(Overload)与重写(Override)的区别

    1 重写 xff08 Override xff09 重写是子类对允许访问的父类的方法进行重新编写的过程 xff0c 方法名 返回值和参数列表不能变 xff0c 方法中的内容可以变化 特点就是 xff1a 子类可以根据自己的需要对父类的方法进
  • ShardingSphere介绍

    官网 xff1a https shardingsphere apache org index zh html 文档 xff1a https shardingsphere apache org document 5 1 1 cn overvi
  • ShardingSphere-JDBC读写分离

    基于之前搭建的mysql主从读写分离使用ShardingSphere JDBC实现读写分离 参考文章 xff1a Docker 部署 MySQL 一主多从 书启秋枫的博客 CSDN博客 CREATE DATABASE mydb2 USE m
  • ShardingSphere-JDBC垂直分片

    什么是数据分片 xff1f 简单来说 xff0c 就是指通过某种特定的条件 xff0c 将我们存放在同一个数据库中的数据分散存放到多个数据库 xff08 主机 xff09 上面 xff0c 以达到分散单台设备负载的效果 数据的切分 xff0
  • ShardingSphere-JDBC水平分片

    项目中可以使用ShardingSphere JDBC将数据存到不同库的表中 一 准备服务器 服务器规划 xff1a 使用docker方式创建如下容器 主服务器 xff1a 容器名server order0 xff0c 端口3310从服务器
  • ShardingSphere-JDBC绑定表

    一 什么是绑定表 指分片规则一致的一组分片表 使用绑定表进行多表关联查询时 xff0c 必须使用分片键进行关联 xff0c 否则会出现笛卡尔积关联或跨库关联 xff0c 从而影响查询效率 例如 xff1a t order 表和 t orde
  • ShardingSphere-JDBC广播表

    一 什么是广播表 指所有的分片数据源中都存在的表 xff0c 表结构及其数据在每个数据库中均完全一致 适用于数据量不大且需要与海量数据的表进行关联查询的场景 xff0c 例如 xff1a 字典表 广播具有以下特性 xff1a xff08 1
  • 01_JUC概述

    1 JUC是什么 xff1f 在 Java 5 0 提供了 java util concurrent 简称JUC 包 xff0c 在此包中增加了在并发编程中很常用的工具类 此包包括了几个小的 已标准化的可扩展框架 xff0c 并提供一些功能
  • 02_Lock锁

    首先看一下JUC的重磅武器 锁 xff08 Lock xff09 相比同步锁 xff0c JUC包中的Lock锁的功能更加强大 xff0c 它提供了各种各样的锁 xff08 公平锁 xff0c 非公平锁 xff0c 共享锁 xff0c 独占
  • 03_线程间通信

    面试题 xff1a 两个线程打印 两个线程 xff0c 一个线程打印1 52 xff0c 另一个打印字母A Z打印顺序为12A34B 5152Z xff0c 要求用线程间通信 public class Demo01 public stati
  • 04_并发容器类

    1 重现线程不安全 xff1a List 首先以List作为演示对象 xff0c 创建多个线程对List接口的常用实现类ArrayList进行add操作 public class NotSafeDemo public static void
  • Java笔记(10)——异常处理

    1 Java异常 Java运行时发生异常可以分为两类 xff1a Error xff1a JVM系统内部错误 资源耗尽等问题产生的异常 Exception xff1a 编程错误或偶然的外在因素导致的 2 常见的异常 2 1 RuntimeE