10 个深恶痛绝的 Java 异常。。
异常是 Java 程序中经常遇到的问题,我想每一个 Java 程序员都讨厌异常,一 个异常就是一个 BUG,就要花很多时间来定位异常问题。
什么是异常及异常的分类请看这篇文章:一张图搞清楚 Java 异常机制。
今天,栈长来列一下 Java 中经常遇到的前 10 个异常,排名不分先后。
1、NullPointerException
空指针异常,操作一个 null 对象的方法或属性时会抛出这个异常。具体看这篇文章:Java 避免空指针的 5 个案例。
2、OutOfMemoryError
内存异常异常,这不是程序能控制的,是指要分配的对象的内存超出了当前最大的堆内存,需要调整堆内存大小(-Xmx)以及优化程序。
3、IOException
IO,即:input, output,我们在读写磁盘文件、网络内容的时候经常会生的一种异常,这种异常是受检查异常,需要进行手工捕获。
如文件读写会抛出 IOException:
public int read() throws IOException
public void write(int b) throws IOException
4、FileNotFoundException
文件找不到异常,如果文件不存在就会抛出这种异常。
如定义输入输出文件流,文件不存在会报错:
public FileInputStream(File file) throws FileNotFoundException
public FileOutputStream(File file) throws FileNotFoundException
FileNotFoundException 其实是 IOException 的子类,同样是受检查异常,需要进行手工捕获。
5、ClassNotFoundException
类找不到异常,Java开发中经常遇到,是不是很绝望?这是在加载类的时候抛出来的,即在类路径下不能加载指定的类。
看一个示例:
public static <T> Class<T> getExistingClass(ClassLoader classLoader, String className) {try {return (Class<T>) Class.forName(className, true, classLoader);}catch (ClassNotFoundException e) {return null;}
}
它是受检查异常,需要进行手工捕获。
6、ClassCastException
类转换异常,将一个不是该类的实例转换成这个类就会抛出这个异常。
如将一个数字强制转换成字符串就会报这个异常:
Object x = new Integer(0);
System.out.println((String)x);
这是运行时异常,不需要手工捕获。
7、NoSuchMethodException
没有这个方法异常,一般发生在反射调用方法的时候,如:
public Method getMethod(String name, Class<?>... parameterTypes)throws NoSuchMethodException, SecurityException {checkMemberAccess(Member.PUBLIC, Reflection.getCallerClass(), true);Method method = getMethod0(name, parameterTypes, true);if (method == null) {throw new NoSuchMethodException(getName() + "." + name + argumentTypesToString(parameterTypes));}return method;
}
它是受检查异常,需要进行手工捕获。
8、IndexOutOfBoundsException
索引越界异常,当操作一个字符串或者数组的时候经常遇到的异常。
如图所示,它是运行时异常,不需要手工捕获。
9、ArithmeticException
算术异常,发生在数字的算术运算时的异常,如一个数字除以 0 就会报这个错。
double n = 3 / 0;
这个异常虽然是运行时异常,可以手工捕获抛出自定义的异常,如:
public static Timestamp from(Instant instant) {try {Timestamp stamp = new Timestamp(instant.getEpochSecond() * MILLIS_PER_SECOND);stamp.nanos = instant.getNano();return stamp;} catch (ArithmeticException ex) {throw new IllegalArgumentException(ex);}
}
10、SQLException
SQL异常,发生在操作数据库时的异常。
如下面的获取连接:
public Connection getConnection() throws SQLException {if (getUser() == null) {return DriverManager.getConnection(url);} else {return DriverManager.getConnection(url, getUser(), getPassword());}
}
又或者是获取下一条记录的时候:
boolean next() throws SQLException;
它是受检查异常,需要进行手工捕获。
栈长这里只列举了 10 个 Java 中最常见的基本异常,另外,栈长已经整理了 Java 系列核心知识点文章,关注Java技术栈微信公众号,在后台回复关键字:java,即可获取。
话说你遇到的最多的是哪个呢?欢迎留言分享。
本文原创首发于微信公众号:Java技术栈(id:javastack),关注公众号在后台回复 "java" 可获取更多,转载请原样保留本信息。
10 个深恶痛绝的 Java 异常。。相关推荐
- 10 个深恶痛绝的 Java 异常。。 1
2019独角兽企业重金招聘Python工程师标准>>> 异常是 Java 程序中经常遇到的问题,我想每一个 Java 程序员都讨厌异常,一 个异常就是一个 BUG,就要花很多时间来定 ...
- java报错空指针异常_夯实基础:认识一下这10 个深恶痛绝的 Java 异常
异常是 Java 程序中经常遇到的问题,我想每一个 Java 程序员都讨厌异常,一 个异常就是一个 BUG,就要花很多时间来定位异常问题. 什么是异常及异常的分类请看这篇文章:异常小结:上一张图搞清楚 ...
- java抛出自定义异常_10 个深恶痛绝的 Java 异常。。
异常是 Java 程序中经常遇到的问题,我想每一个 Java 程序员都讨厌异常,一 个异常就是一个 BUG,就要花很多时间来定位异常问题. 什么是异常及异常的分类请看这篇文章:一张图搞清楚 Java ...
- Java基础10:全面解读Java异常
更多内容请关注微信公众号[Java技术江湖] 这是一位阿里 Java 工程师的技术小站,作者黄小斜,专注 Java 相关技术:SSM.SpringBoot.MySQL.分布式.中间件.集群.Linux ...
- java异常 说服力_异常常见面试题目
1) Java中什么是Exception? 这个问题经常在第一次问有关异常的时候或者是面试菜鸟的时候问.我从来没见过面高级或者资深工程师的 时候有人问这玩意,但是对于菜鸟,是很愿意问这个的.简单来说, ...
- java 异常 最佳实践_处理Java异常的10种最佳实践
java 异常 最佳实践 在本文中,我们将看到处理Java异常的最佳实践. 用Java处理异常不是一件容易的事,因为新手很难理解,甚至专业的开发人员也可能浪费时间讨论应该抛出或处理哪些Java异常. ...
- 处理Java异常的10种最佳实践
在本文中,我们将看到处理Java异常的最佳实践. 用Java处理异常不是一件容易的事,因为新手很难理解,甚至专家级开发人员也可能浪费时间讨论应该抛出或处理哪些Java异常. 因此,最大的开发公司对如何 ...
- 最常见的10种Java异常问题!
封面:洛小汐 译者:潘潘 前言 本文总结了有关Java异常的十大常见问题. 目录 检查型异常(checked) vs. 非检查型异常(Unchecked) 异常管理的最佳实践箴言 为什么在try代码块 ...
- numberformatexception是什么异常_译文《最常见的10种Java异常问题》
封面:洛小汐 译者:潘潘 知彼知己,方能百战不殆. 前言 本文总结了有关Java异常的十大常见问题. 目录 检查型异常(checked) vs. 非检查型异常(Unchecked) 异常管理的最佳实践 ...
最新文章
- android weex跳转闪退,关于weex页面在android端跳转的问题
- Linux下git的使用——将已有项目放到github上
- Android之项目中调用已有.so库
- 自然语言处理 —— 2.3 词嵌入的特性
- Must be between v0 and v15, inclusive解决办法
- python爬虫06
- UIView用户事件响应
- ajax上传图片 java_Java+ajax+图片上传
- 论PMP和PRINCE2的价值?
- WPS Office常用快捷键大全
- 计算机提示应用程序无法启动,电脑应用程序无法正常启动提示0x000007b怎么办?...
- 为什么现在很多人不看好商汤科技?
- c语言程序常用的数学函数,C语言函数——常用数学函数
- access 套用表格_Word表格编辑技巧:在Word中使用Access的数据-word技巧-电脑技巧收藏家...
- 给html网页加背景图
- 拉普拉斯变换的物理意义是什么
- firebug “阻挡”
- 【职场进阶】做好项目管理,先从明确职责开始
- 投资者选择量化基金的四个指标
- 计算机毕业生工作收入调查,大学毕业生收入调查:最高薪的工作是它
热门文章
- debug运行可以,release运行报错的原因及修改方法
- 人工智能和机器学习领域有哪些有趣的开源项目
- codecheck_use_record
- SVO 半直接视觉里程计
- C#实现光盘做启动盘
- GDAL中GDALDataset::RasterIO分块读取的实现
- 【数据库】适用于SQLite的SQL语句(三)
- 微信小程序万里目_微信小程序学习用推荐:破音万里:音频播放,音乐列表
- python 区域和检索_304. 二维区域和检索(Python)
- android wear无法启用,android-wear – 无法创建Android虚拟设备,“没有为此目标安装系统映像”...