首页 > 编程语言 >分享一下java中遇到过的十个异常报错情况

分享一下java中遇到过的十个异常报错情况

时间:2024-10-20 23:10:21浏览次数:1  
标签:解决办法 java 十个 报错 sql 异常 指针

1. 使用lambda表达式时候的闭包问题

闭包:在lambda表达式中使用外部变量的时候,会给该变量自动加上final
image
可以看到forEach中的a++处出现报错,因为a定义在了lambda表达式之外,即不在o->{}的大括号中。
解决办法:把该变量变成引用数据类型
image

2. 算术异常(ArithmeticException)

image
解决办法:找到报错中提示的出错行,检查附近语法是否有除以0的情况。或者直接try-catch捕获掉。

3.空指针异常(NullPointerException)

空指针异常应该是最常见也是最容易出现的,出现的情况也需要根据业务来分析。
不过大部分空指针异常都是因此传入的参数是null,因此解决办法就是记得要做判空,可以使用Objects.isnull来判断。
有时候一些空指针异常也挺莫名其妙的,例如这里出现空指针异常的情况就是注入一个Bean值为null,导致这个Bean调用的方法出现空指针异常,但是这个Bean在业务层中又能够正常使用,只是在测试类中会报空指针,我怀疑是依赖的问题或者是版本冲突,暂时还没找到具体原因。
image
image

4. IO流异常(IOException)

解决办法:推荐try-catch

5. ClassNotFoundException

即包没找到。
解决办法:检查一下路径写没写对,确保依赖管理正确,看看tager包有没有class文件,没有就使用maven重新compile一下,确保JAR文件存在。

6. IndexOutOfBoundsException(数组下标越界)

这个一般是发生在你用到了数组的地方,看看你的for循环是不是循环的数值写错了,确保你的循环不会超过数组的长度。

  1. SQLException
    这是和SQL有关的异常,一般是连接错误、SQL代码错误,一般都会出现sql字样,如果是sql代码写错了,一般会提示你在哪句附近可能有错。
    Exception in thread "main" java.sql.SQLException: Connection refused: connect at java.sql.DriverManager.getConnection(DriverManager.java:645)
    解决办法:如果是密码错误,就检查配置文件中sql用户名密码是不是写错了,或者是端口号有没有写错;如果是SQL代码错误,检查参数是不是少了#{},或者参数使用了@Param取别名没有使用别名,又或者是少了一个大括号,总之,sql的异常需要仔细检查。

8. StackOverflowError栈内存溢出错误

类似这种,可能是使用了递归、无限调用自己、或者是调用链太长。
image
解决办法:添加终止条件,打破循环调用。

9. IllegalArgumentException

非法参数异常,检查参数类型是否匹配

10. Required request body is missing

这个异常和@RequestBody注解有关,加了这个注解,但是没有传json对象的参数。
解决办法:弄清楚是请求体传参还是路径参数,如果是数据在请求体中以json类型传递,就需要加这个注解。

标签:解决办法,java,十个,报错,sql,异常,指针
From: https://www.cnblogs.com/xlvlog/p/18488133

相关文章

  • 【Java SE 】继承 与 多态 详解
     ......
  • 初学javaweb遇到的问题
    1.环境配置问题我得知要创建一个javaweb项目,需要下载安装idea专业版,于是我搜索网络资源,找到了使用专业版的办法。并根据教程配置tomcat,jdk,meaven等项目基础环境配置。2.项目结构理解我在使用Maven创建项目时,对pom.xml文件的配置感到困惑。特别是依赖管理部分,很多依赖的版......
  • 【Java SE 】封装 的特性 和 static 详解
     ......
  • 基于Java的畅销书图书管理系统的设计与实现(源码+LW+讲解和调试)
    目录:目录:博主介绍: 完整视频演示:你应该选择我技术栈介绍:需求分析:系统各功能实现一览:1.注册2.登录部分代码参考: 项目功能分析: 项目论文:源码获取:博主介绍: ......
  • java项目篇-用户脱敏展示
    用户敏感信息脱敏展示定义手机号和证件号的Jackson自定义序列化器,并在对应需要脱敏的敏感字段上指定自定义序列化器。在进行指定的需要脱敏的字段(身份证号,手机号,银行卡号等)序列化的时候,该字段自动变成脱敏json对象。1)身份证号序列化器importcn.hutool.core.util.Des......
  • 一,Java 环境配置与基础语法
    Java环境配置与基础语法在开始Java编程之前,正确配置Java环境和理解基础语法是至关重要的。这不仅帮助我们编写有效的Java程序,还能确保程序的顺利运行。Java环境配置Java环境配置主要包括JDK(JavaDevelopmentKit)和JRE(JavaRuntimeEnvironment)的安装和环境变量的配......
  • 测开必备-java基础-for、while和do-while循环使用场景
    在编程中,选择使用for循环、while循环还是do-while循环,主要取决于你的具体需求和代码逻辑。下面我们来详细讨论一下这三种循环的使用场景。for循环的使用场景for循环通常用于已知循环次数的场景,特别是当你需要遍历数组、集合或执行固定次数的迭代时。for循环的语法结构清晰地定义......
  • 黑马JavaWeb-day02
    什么是JavaScript?JavaScript:简称Js,是一门跨平台、面向对象的脚本语言。是用来控制网页行为的,它能使网页可交互JavaScript和Java是完全不同的语言,无论是概念还是设计。但是基础语法类似。JavaScriptJavaScript引入方式内部脚本:将JS代码定义在HTML页面中JavaScript代码必......
  • 一,认识计算机和Java基础
    认识计算机和Java基础在开始学习Java编程之前,了解计算机的基础知识和Java语言的概述是非常重要的。这不仅帮助我们更好地理解Java程序的执行流程,还能让我们对计算机的组成和操作有更深入的认识。计算机的组成计算机由硬件和软件两大部分构成:硬件硬件是指计算机系统中由......
  • 使用 JavaScript (Node.js) 实现验证码识别与自动化登录
    安装所需依赖首先,确保你已经安装了Node.js。然后,使用npm安装所需的库:bashnpminstallaxiosjimptesseract.js2.下载验证码图片使用axios下载验证码图片并保存到本地:更多内容联系1436423940javascriptconstfs=require('fs');constaxios=require('axios');......