java中异常-异常概述+异常体系结构

news2024/11/24 13:29:26

一、异常概述

1、什么是异常?

java程序在运行时出现的不正常情况

2、java中提供的默认的异常处理机制

java中对java程序运行时可能会出现的每种不正常情况都创建了一个唯一对应的类,在java程序运行时如果出现不正常情况,java程序就会创建该种情况对应的类的对象并抛出,此类对象中包含了此情况的所有异常信息,包括异常的类型、异常的原因、异常的位置

3、注意:

(1)语法错误不是异常。程序语法错误,编译不通过,不会产生字节码文件,也就不会运行

(2)不处理异常会导致JVM的非正常停止

4、java程序中无法处理的异常

(1)在读取文件时文件被删除

(2)在进行网络通信时网络中断

二、常见异常

1、数组索引越界异常

(1)正常程序

public static void main(String[] args) {
        // 1、数组索引越界异常
        int[] a=new int[3];
        System.out.println(a[2]);
        System.out.println("你好,中国!");
    }

(2)异常程序

 public static void main(String[] args) {
        // 1、数组索引越界异常
        int[] a=new int[3];
        System.out.println(a[3]);
        System.out.println("你好,中国!");
    }

异常位置之后的程序不会被运行

2、其它常见异常

public static void main(String[] args) {
        // 1、字符串索引越界异常
        String s = "abc";
        System.out.println(s.charAt(3));//java.lang.StringIndexOutOfBoundsException
        // 2、空指针异常
        String s1 = null;
        System.out.println(s1.length());//java.lang.NullPointerException
        // 3、算数异常
        int a = 3;
        System.out.println(a / 0);//ArithmeticException
        // 4、类型转换异常
        Object object = "123";
        Integer s2 = (Integer) object;//java.lang.ClassCastException
        // 5、数字格式化异常
        int b = Integer.parseInt("ab"); //java.lang.NumberFormatException
        System.out.println(b);
    }

三、异常体系结构

1、根类(java.lang.Throwable)

(1)public void printStackTrace() 打印栈中的异常信息

(2)public String getMessage() 获取异常信息

2、子类(java.lang.Error)

Java虚拟机无法解决的严重问题,如内存资源耗尽,一般不编写针对性代码进行处理

(1)StackOverflowError 栈溢出错误(栈内存溢出)

public class Demo {
    int sum(int num){
        if(num==1){
            return 1;
        }
        return num+sum(num-1);
    }
    public static void main(String[] args) {
        int res=new Demo().sum(1000000);
        System.out.println(res);
    }
}

(2)OutOfMemoryError 没有内存错误(堆内存溢出,简称OOM)

public class Demo {
    public static void main(String[] args) {
        List<Integer>list=new ArrayList<>();
        while(true){
            list.add(1);
        }
    }
}

3、子类(java.lang.Exception)

可以使用java中异常处理机制进行处理的一般问题

4、异常

(1)广义异常:Throwable类和其所有的子类

(2)狭义异常:Exception类

5、异常体系结构图

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1807121.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据结构:旋转数组

方法1 &#xff08;三次逆置法&#xff09;&#xff1a; void reverse(int* nums, int start, int end) {while (start < end) {int temp nums[start];nums[start] nums[end];nums[end] temp;start;end--;} }void rotate(int* nums, int numsSize, int k) {k k % numsS…

Java:111-SpringMVC的底层原理(中篇)

这里续写上一章博客&#xff08;110章博客&#xff09;&#xff1a; 现在我们来学习一下高级的技术&#xff0c;前面的mvc知识&#xff0c;我们基本可以在67章博客及其后面相关的博客可以学习到&#xff0c;现在开始学习精髓&#xff1a; Spring MVC 高级技术&#xff1a; …

Comfyui容器化部署与简介

目前使用 Stable Diffusion 进行创作的工具主要有两个&#xff1a;Stable Diffusion WebUI 和 ComfyUI。本文重点介绍ComfyUI的部署使用。 ComfyUI 可定制性很强&#xff0c;可以让创作者搞出各种新奇的玩意&#xff0c;通过工作流的方式&#xff0c;也可以实现更高的自动化水平…

SwiftUI五视图动画和转场

代码下载 使用SwiftUI可以把视图状态的改变转成动画过程&#xff0c;SwiftUI会处理所有复杂的动画细节。在这篇中&#xff0c;会给跟踪用户徒步的图表视图添加动画&#xff0c;使用animation(_:)修改器给一个视图添加动画效果非常容易。 下载起步项目并跟着本篇教程一步步实践…

Linux 内核之 mmap 内存映射触发的缺页异常 Page Fault

文章目录 前言一、简介1. MMU 内存管理2. 缺页中断3. 页表4. 小节 二、mmap 提前分配物理内存1. mm_populate 函数2. __mm_populate 函数3. populate_vma_page_range 函数4. __get_user_pages 函数5. find_extend_vma 函数6. find_vma 函数7. follow_page_mask 函数8. follow_p…

专业场景化ChatGPT论文润色提示词指令,更精准、更有效辅助学术论文撰写

大家好&#xff0c;感谢关注。我是七哥&#xff0c;一个在高校里不务正业&#xff0c;折腾学术科研AI实操的学术人。可以添加我&#xff08;yida985&#xff09;交流学术写作或ChatGPT等AI领域相关问题&#xff0c;多多交流&#xff0c;相互成就&#xff0c;共同进步。 在学术写…

数据分析必备:一步步教你如何用Pandas做数据分析(21)

1、Pandas 可视化 Pandas 可视化是指使用 Pandas 库中的函数和方法来创建数据可视化图表。Pandas 提供了一些基本的绘图功能&#xff0c;例如折线图、柱状图、饼图等&#xff0c;可以通过调用相应的函数来创建这些图表。 2、基本绘图&#xff1a;绘图 Series和DataFrame上的…

数据库四种隔离等级

持续更新以及完善中… 数据库事务隔离 首先&#xff0c;为什么要有事务隔离呢&#xff1f; 在单线程下&#xff0c;没什么大碍&#xff0c;但是我们想要提高效率&#xff0c;采用多线程并发时&#xff0c;便会出现一些问题。 **下面的问题一定要当作一个事务来看待&#xf…

高考之后第一张大流量卡应该怎么选?

高考之后第一张大流量卡应该怎么选&#xff1f; 高考结束后&#xff0c;选择一张合适的大流量卡对于准大学生来说非常重要&#xff0c;因为假期期间流量的使用可能会暴增。需要综合考虑多个因素&#xff0c;以确保选到最适合自己需求、性价比较高且稳定的套餐。以下是一些建议…

MAVEN架构项目管理工具

1、什么是maven Maven是跨平台的项目管理工具。主要服务于基于Java平台的项目构建&#xff0c;依赖管理和项目信息管理。 2、maven的目标&#xff1a;Maven的主要目标是为了使开发人员在最短的时间内领会项目的所有状态 3、使用maven不需要考虑各个依赖的版本&#xff0c;因…

指针(初阶2)“野指针以及指针运算”

目录 一.野指针 二.如何避免野指针 三.指针运算 1、指针&#xff08;-&#xff09;整数 2、指针 - 指针 3、指针关系运算 小编在这里声明一下&#xff0c;将某一块的知识点分为上中下或者1&#xff0c;2&#xff0c;3来编写不是为了增加小编的文章总量&#xff0c;也不是故意这…

MySQL之多表查询—列子查询

一、引言 标量子查询上篇博客已学习。接下来这篇博客学习子查询的第二种形式——列子查询 列子查询 子查询返回的结果是一列&#xff08;当然也可以是多行)&#xff0c;这种子查询称为列子查询。 列子查询可以使用的操作符 IN、NOT IN 、ANY&#xff08;any&#xff09;、SOME…

windows域控共享网络驱动器

背景 假设在一家公司&#xff0c;有新入职的员工。我们给其创建了域账号&#xff0c;有一些共享的文件需要其可以直接访问到。我们可以采用共享目录的形式&#xff0c;但是每次都要输入共享端的ip或者主机名&#xff0c;比较麻烦。我们希望创建的域账号访问共享文件更便捷一些…

使用Flask框架在Python中获取HTTP请求头信息

目录 引言 一、Flask框架简介 二、获取HTTP请求头的方法 三、案例分析 案例一&#xff1a;基于请求头进行用户身份验证 案例二&#xff1a;基于请求头的内容类型处理不同格式的响应 四、总结 引言 在Web开发领域&#xff0c;HTTP协议是客户端和服务器之间进行通信的基础…

爆破信息壁垒!多少考研人还在盲目刷题?

有些同学&#xff0c;天生擅长冲锋陷阵&#xff0c;不擅长思考总结。 忌&#xff1a;看视频一日千里&#xff0c;看例题从不动笔。 —— 新知识都“会”&#xff0c;旧知识都不会。 大忌&#xff1a;做题没思路&#xff0c;一看答案都会&#xff01; 24的学长学姐&#xff0c…

抽象的java入门1.3.2

前言&#xff1a; 全新版本的函数&#xff08;方法&#xff09;定义&#xff0c;更简单 1.优化了验证过程&#xff0c;直击本质 2.新增目前一图流 正片&#xff1a; 函数的结构可以分为三部分&#xff1a;函数名&#xff0c;参数&#xff0c;函数体 一生二&#xff0c;二生…

VS2019专业版 C#和MFC安装

1. VS2019专业版下载地址 https://learn.microsoft.com/en-us/visualstudio/releases/2019/history 2.安装 C# 部分 MFC部分

ATTCK红队评估(五)

环境搭建 靶场拓扑图&#xff1a; 靶机下载地址: 漏洞详情 外网信息收集 确定目标靶机地址&#xff1a; 发现主机192.168.135.150主机是本次攻击的目标地址。探测靶机开放的端口信息&#xff1a; 目标靶机开放了两个端口&#xff1a;80、3306&#xff0c;那没什么意外的话就是…

服务部署:.NET项目使用Docker构建镜像与部署

前提条件 安装Docker&#xff1a;确保你的Linux系统上已经安装了Docker。如果没有&#xff0c;请参考官方文档进行安装。 步骤一&#xff1a;准备项目文件 将你的.NET项目从Windows系统复制到Linux系统。你可以使用Git、SCP等工具来完成这个操作。如何是使用virtualbox虚拟电…

2024年6月8日 每周新增游戏

中医百科中药: 中医百科中药是一款非常强大的中药知识科普软件&#xff0c;该应用提供500多味中草药的文献资料&#xff0c;强大的搜索功能可根据功效、特点和关键词来快速查找中药&#xff0c;而且每味中药的图片、功效、主治、炮制方法等百科知识&#xff0c;可以很好的帮助你…