java常见异常汇总
在6月的投票中,结果昨天已经出来了,大家多数的希望多推送一些java的基础知识。首先来一下热身,debug模式启动起来..........
身为一个程序猿,开发过程中(调研--需求--产品--UI--开发--测试--上线),肯定会出现各种各样的BUG,如:程序异常、环境异常、服务器异常等等,另各位防不胜防,那么出现问题后,首先想到一个万能方法,叫做百度,除了百度,小编也总结了下常见的异常以及处理方式,冰冻三尺非一日之寒,各位不要着急。
一:异常汇总:
1:java.lang.NullPointerException 空指针异常问题
解析:
- 所谓的指针,就是Java中的对象的引用。比如String s;这个s就是指针
- 所谓的空指针,就是指针的内容为空,比如上面的s,如果令它指向null,就是空指针
- 所谓的空指针异常,就是一个指针是空指针,你还要去操作它,既然它指向的是空对象,它就不能使用这个对象的方法。比如上面的s假如为null,你还要用s的方法,比如s.equals( String x);那么就会产生空指针异常
处理:
首先要看的是异常日志(不会看日志的请谷歌),定位到日志所报异常的代码行,启用debug模式,调试程序,看看哪个对象是null,并分析具体原因,如果对象可为空,则在使用之前判断是否为空条件即可
2:ConnectTimeoutException 链接超时异常问题
解析:
- 出现这个异常一般有几个方面,数据库连接,第三方地址连接,socket连接
处理:
不管是哪种连接超时,首先看一下连接地址的IP或者端口号是否错误(90%的错),如果是网络原因,请设置连接超时时间(一般是socketTime),如下:
URL url = new
URL("你服务器的ip地址");
HttpURLConnection conn = url.openConnection();
conn.setConnectTimeout(3000); //超过3秒就连接超时了
conn.setRequestMethod("GET"); //使用的http的get方法
if
(conn.getResponseCode() == HttpStatus.SC_OK) {
//要是conn.getResponseCode()的值为200,再进行后面的操作。
}else{
}
3:ArrayIndexOutOfBoundsException 数组越界异常
解析:
数组索引越界异常原因:访问了不存在的索引
处理:
debug模式调试数组,看下数据的下标是否溢出或者不存在而导致的越界(for循环使用较多)
4:ClassCastException 类型转换异常
解析与处理:
ClassCastException是JVM在检测到两个类型间转换不兼容时引发的运行时异常。此类错误通常会终止用户请求。在执行任何子系统的应用程序代码时都有可能发生ClassCastException异常。通过转换,可以指示Java编译器将给定类型的变量作为另一种变量来处理。对基础类型和用户定义类型都可以转换。Java语言规范定义了允许的转换,其中大多数可在编译时进行验证。不过,某些转换还需要运行时验证。如果在此运行时验证过程中检测到不兼容,JVM就会引发ClassCastException异常
5:java.lang.ClassNotFoundException 类未找到异常
解析与处理:
这里主要考虑一下类的名称和路径是否正确即可,通常都是程序试图通过字符串来加载某个类时可能引发 异常,比如:调用Class.forName();或者调用ClassLoad的finaSystemClass();或者LoadClass();
6:java.lang.NumberFormatException 对象转换异常( 字符串转换为数字异常)
解析与处理:
当试图将一个String转换为指定的数字类型,而该字符串确不满足数字类型要求的格式时,抛出该异常.如现在讲字符型的数据“123456”转换为数值型数据时,是允许的。但是如果字符型数据中包含了非数字型的字符,如123#56,此时转换为数值型时就会出现异常。系统就会捕捉到这个异常,并进行处理.
7:java.lang.NoSuchMethodException 方法不存在异常
解析与处理:
当程序试图通过反射来创建对象,访问(修改或读取)某个方法,但是该方法不存在就会引发异常
8:java.lang.OutOfMemoryException 内存不足错误
解析与处理:
当可用内存不足以让Java虚拟机分配给一个对象时抛出该错误。
9:java.lang.InterruptedException 被中止异常
解析与处理:
当某个线程处于长时间的等待、休眠或其他暂停状态,而此时其他的线程通过Thread的interrupt方法终止该线程时抛出该异常。
10:java.lang.RuntimeException 运行时异常
解析与处理:
是所有Java虚拟机正常操作期间可以被抛出的异常的父类。
11:javax.servlet.jsp.JspException: Cannot retrieve mapping for action /index.htm(/index.htm是你的action名字)
解析与处理:
action没有再struts-config.xml 中定义,或没有找到匹配的action,例如在JSP文件中使用 <html:form action="index.htm".将表单提交给index.htm处理,如果出现上述异常,请查看struts-config.xml中的定义部分,有时可能是打错了字符或者是某些不符合规则。
其它异常分类:
违背安全原则异常:SecturityException
操作数据库异常:SQLException
输入输出异常:IOException
通信异常:SocketException
二:异常的处理方式:
1)捕获异常:在Java程序运行过程中系统得到一个异常对象是,它将会沿着方法的调用栈逐层回溯,寻找处理这一异常的代码。找到能够处理这种类型异常的方法后,运行时系统把当前异常交给这个方法处理;如果找不到可以捕获异常的方法,则运行时系统将终止,相应的Java程序也将退出。捕获异常是通过try-catch-finally语句实现的。语法为:
try{
...
}catch(ExceptionName1 e){
...
}catch(ExceptionName2 e){
...
}finally{
...
}
2)声明抛弃异常:当Java程序运行时系统得到一个异常对象时,如果一个方法并不知道如何处理所出现的异常,则可在方法声明时,声明抛弃异常。声明抛弃异常是在一个方法声明中的throws子句中指明的。如:
public int read() throws IOException{
...
}
其中throws IOException就是声明抛弃异常,throws后可以跟多个异常类型。
- Mac Jenkins搭建 Android/IOS自动打包环境
- javascript 红皮高程(11)
- javascript 红皮高程(8)
- javascript 红皮高程(7)
- javascript 红皮高程(17)-- 左移(<<)
- javascript 红皮高程(17)-- 按位异或(XOR)
- javascript 红皮高程(17)
- javascript 红皮高程(16)
- javascript 红皮高程(15)
- javascript 红皮高程(21)-- 乘性操作符
- javascript 红皮高程(20)-- 逻辑或
- javascript 红皮高程(19)-- 逻辑与
- 技术分享 | 浅谈 RAS
- Sniper-OJ 练习平台多题WriteUp
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- 基于Servlet实现的简单登陆练习
- JavaScript初识
- 聊聊dubbo-go的DubboInvoker
- 如何在云开发Cloudbase中使用MySQL数据库
- Kubernetes笔记之基本概念
- 腾讯云语音识别之一句话识别
- 创建线程都有哪些方式?— Callable篇
- UiAutomator源码学习(3)-- UiObject
- RTSP协议视频流媒体播放器EasyPlayer-RTSP-OCX接口文档API接口函数定义
- Python逐行写入
- C++ this 指针
- C++ push方法与push_back方法
- 别人变强靠天赋,而我,靠思维导图
- Spring Boot 五种热部署方式
- 二叉树最小深度