JAVA项目中常用的异常处理情况
1.数学运算异常( java.lang.arithmeticexception)
程序中出现了除以零这样的运算就会出这样的异常,对这种异常,大家就要好好检查一下自己程序中涉及到数学运算的地方,公式是不是有不妥了。
2.数组下标越界(java.lang.arrayindexoutofboundsexception)
程序中大多都有对数组的操作,因此在调用数组的时候一定要认真检查,看自己调用的下标是不是超出了数组的范围,一般来说,显示(即直接用常数当下标)调用不太容易出这样的错,但隐式(即用变量表示下标)调用就经常出错了,还有一种情况,是程序中定义的数组的长度是通过某些特定方法决定的,不是事先声明的,这个时候,最好先查看一下数组的length,以免出现这个异常。
3.内存溢出异常(java.lang.OutOfMemoryError)
内存溢出分为Java堆溢出 、虚拟机栈和本地方法栈溢出 、方法区和运行常量池溢出 、本机直接内存溢出
1.Java堆溢出 heap space:
Java堆溢出是因为Java堆容量不足导致的,可以通过设置虚拟机参数-Xms和-Xmx分别设定Java堆的最小容量和最大容量。
public class RuntimeConstantPoolOOM {
public static void main(String[] args) {
List list = new ArrayList ();
int i=0;
while(true){
list.add(String.valueOf(i++).intern());
//会产生java.lang.OutOfMemoryError:PermGen space
}
}
}
2.永久代容量不足 PermGen space:
永久代是记录常量,静态变量,类信息等,常见使用String.intern()方法导致常量过多;还有一种情况是使用CGlib动态创建类的代理过多,也会导致类信息膨胀;还有一种是Java Web中,Jsp文件过多导致,因为JSP其实也是一个Java类,可通过设置虚拟机参数-XX:PermSize和-XX:MaxPermSize分别设定永久代的最小容量和最大容量。
3,本级直接内存溢出DirectMemory:
通常是操作系统内存不足的情况下,Java应用程序还向操作系统申请本地内存导致,可通过设置-XX:MaxDirectMemorySize设定Java虚拟机可申请本地内存的最大容量。
4,创建线程过多(unable to create new native thread):由于每个线程都会分配一定的栈空间,申请线程过多,会导致栈空间不足,从而导致栈溢出,但Java虚拟机抛出异常信息的是 “java.lang.OutOfMemoryError:unable to create new native thread”这个异常在Windows系统上可能运行很久都不会抛出,而是会导致系统假死
4.程序遇上空指针(java.lang.nullpointerexception)
调用了未经初始化的对象或者是不存在的对象,这个错误经常出现在创建图片,调用数组这些操作中,比如图片未经初始化,或者图片创建时的路径错误等等。对数组操作中出现空指针,很多情况下是一些刚开始学习编程的朋友常犯的错误,即把数组的初始化和数组元素的初始化混淆起来了。数组的初始化是对数组分配需要的空间,而初始化后的数组,其中的元素并没有实例化,依然是空的,所以还需要对每个要进行调用的元素都进行初始化
5.指定的类不存在(java.lang.classnotfoundexception)
这个异常是很多原本在jb等开发环境中开发的程序员,把jb下的程序包放在wtk下编译经常出现的问题,这里主要考虑一下类的名称和路径是否正确即可,如果是在jb下做的程序包,一般都是默认加上package的,所以转到wtk下后要注意把package的路径加上
6.方法参数错误(java.lang.illegalaccessexception)
很多j2me的类库中的方法在一些情况下都会引发这样的错误,比如音量调节方法中的音量参数如果写成负数就会出现这个异常,再比如g.setcolor(int red,int green,int blue)这个方法中的三个值,如果有超过255的也会出现这个异常,因此一旦发现这个异常,我们要做的,就是赶紧去检查一下方法调用中的参数传递是不是出现了错误。
7.没有访问权限(java.lang.illegalaccessexception)
当应用程序要调用一个类,但当前的方法即没有对该类的访问权限便会出现这个异常。对程序中用了package的情况下要注意这个异常。
8.错误(java.lang.Error)
错误,是所有错误的基类,用于标识严重的程序运行问题,这些问题通常描述一些不应该被应用程序捕获的反常情况。
原因:对系统所访问外部资源,未执行关闭操作,导致外部资源大量浪费,最终可能导致系统无法正常运行;对系统所访问的外部资源关闭次数太多,外部系统无法正常处理;系统访问的外部资源出现异常情况。
解决方法:访问外部资源之前,首先检查该资源(如数据库)是否可正常连接或操作;访问外部资源时,如果进行了连接,一定要关闭操作,并且仅进行一次关闭操作;尽量在同一操作中共享外部资源,以减少该操作对资源的浪费,提高程序的执行效率。
例如初始化程序错误、违法访问错误、不兼容的类变化错误、实例化错误、内部错误、链接错误、未找到类定义错误、域不存在错误、方法不存在错误等等。
JAVA项目中常用的异常处理情况的更多相关文章
- JAVA项目中常用的异常处理情况总结
JAVA项目中常用的异常知识点总结 1. java.lang.nullpointerexception这个异常大家肯定都经常遇到,异常的解释是"程序遇上了空指针",简单地说就是调用 ...
- 【转载】Java项目中常用的异常处理情况总结
一,JDK中与异常相关的类 分析: Java中的异常分类: Throwable类有两个直接子类: Exception:出现的问题是可以被捕获的: Error:系统错误,通常由JVM处理. 可捕获的异常 ...
- JAVA项目中常用的异常知识点总结
JAVA项目中常用的异常知识点总结 1. java.lang.nullpointerexception这个异常大家肯定都经常遇到,异常的解释是"程序遇上了空指针",简单地说就是调用 ...
- JAVA中常用的异常处理情况
1.java.lang.nullpointerexception程序遇上空指针 这个异常大家肯定都经常遇到,异常的解释是"程序遇上了空指针",简单地说就是调用了未经初始化的对象或者 ...
- Day 30:HTML和CSS在Java项目中常用语法
framSet例子,其中的页面链接地址视情况而定,应为我还不知怎么弄当前文件下呢,例子主要在说明该标签如何使用 <!DOCTYPE html PUBLIC "-//W3C//DTD X ...
- Java项目中常用的的五大设计原则
今天我们一起来聊聊关于设计原则相关的知识点. SOLID五大原则是什么 SRP 单一责任原则 单一责任原则,从名字上我们就能比较好的去理解它.这项原则主张一个对象只专注于单个方面的逻辑,强调了职责的专 ...
- 对java异常的总结及java项目中的常用的异常处理情况
文章涉及内容来源:黑马程序员自学整理的笔记,网上查阅资料,以及转载名为墨钺的博客大佬,附上博客转载地址:https://www.cnblogs.com/gothic-death/p/9946415.h ...
- JAVA中常用的异常处理方法
1.在Java项目中经常遇到的异常情况 算术异常类:ArithmeticExecption 空指针异常类:NullPointerException 类型强制转换异常:ClassCastExceptio ...
- 在Java项目中整合Scala
Scala是一个运行在Java JVM上的面向对象的语言.它支持函数编程,在语法上比Java更加灵活,同时通过Akka库,Scala支持强大的基于Actor的多线程编程.具有这些优势,使得我最近很想在 ...
随机推荐
- checkstyle.xml Code Style for Eclipse
1. Code Templates [下载 Code Templates] 打开 Eclipse -> Window -> Preferences -> Java -> Cod ...
- Confluence 6 为登录失败配置使用验证码
如果你具有 Confluence 管理员的权限,你可以限制 Confluence 登录失败的最大尝试次数.在给予最大登录失败尝试(默认为 3 次)次数后,Confluence 将会在用户进行再次尝试的 ...
- gnuradio 创建cos_source
C++教程 ys_linux@computer:~$ gr_modtool nm kcd Creating out-of-tree module in ./gr-kcd... Done. Use 'g ...
- PHP实现网络Socket及IO多路复用
一直以来,PHP很少用于socket编程,毕竟是一门脚本语言,效率会成为很大的瓶颈,但是不能说PHP就无法用于socket编程,也不能说PHP的socket编程性能就有多么的低,例如知名的一款PHP ...
- MongoDB的简单操作
一.简介 二.MongoDB基础知识 三.安装 四.基本数据类型 五.增删改查操作 六.可视化工具 七.pymongo 一.简介 MongoDB是一款强大.灵活.且易于扩展的通用型数据库 MongoD ...
- Nginx详解八:Nginx基础篇之Nginx请求限制的配置语法与原理
Nginx的请求限制: 连接频率的限制:limit_conn_module 配置语法:limit_conn_zone key zone=name:size;默认状态:-配置方法:http 配置语法:l ...
- Python游戏编程(Pygame)
安装Pygame pip install pygame C:\Users> pip install pygame Collecting pygame Downloading https://fi ...
- js 打开摄像头方法 (定制摄像头)
var video = document.getElementById("video");if (navigator.mediaDevices && navigat ...
- Spring Boot 导出Excel表格
Spring Boot 导出Excel表格 添加支持 <!--添加导入/出表格依赖--> <dependency> <groupId>org.apache.poi& ...
- SpringMVC - 1.快速入门
1. HelloWorld 步骤: 加入 jar 包 mons-logging-1.1.3.jar spring-aop-4.0.0.RELEASE.jar spring-beans-4.0.0.RE ...