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" 可获取更多,转载请原样保留本信息。

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

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

相关文章

POJ 2777 - Count Color(线段树区间更新+状态压缩)

题目链接 https://cn.vjudge.net/problem/POJ-2777 【题意】 有一个长度为 LLL 的区间 [1,L][1,L][1,L] &#xff0c;有 TTT 种颜色可以涂&#xff0c;有 QQQ 次操作&#xff0c;操作分两种C A B CC \ A \ B \ CC A B C 把区间 [A,B][A,B][A,B] 涂成第 CCC 种颜色P A BP \ A \ …

如何实施成功的数据清理流程

干净的数据是发现和洞察力的基础。 如果数据很脏&#xff0c;您的团队为分析&#xff0c;培养和可视化数据而付出的巨大努力完全是在浪费时间。 当然&#xff0c;肮脏的数据并不是新的。 它早在计算机变得普及之前就困扰着决策。 现在&#xff0c;计算机技术已普及到日常生活中…

nginx前端代理tomcat取真实客户端IP

nginx前端代理tomcat取真实客户端IP2011年12月14日⁄ nginx⁄ 暂无评论⁄ 被围观 3,000 次使用Nginx作为反向代理时&#xff0c;Tomcat的日志记录的客户端IP就不在是真实的客户端IP&#xff0c;而是Nginx代理的IP。要解决这个问题可以在Nginx配置一个新的Header&#xff0c;用来…

kubeadm安装kubernetes 1.13.2多master高可用集群

1. 简介 Kubernetes v1.13版本发布后&#xff0c;kubeadm才正式进入GA&#xff0c;可以生产使用,用kubeadm部署kubernetes集群也是以后的发展趋势。目前Kubernetes的对应镜像仓库&#xff0c;在国内阿里云也有了镜像站点&#xff0c;使用kubeadm部署Kubernetes集群变得简单并且…

通才与专家_那么您准备聘请数据科学家了吗? 通才还是专家?

通才与专家Throughout my 10-year career, I have seen people often spend their time and energy in passionate debates about what data science can deliver, and what data scientists do or do not do. I submit that these are the wrong questions to focus on when y…

ubuntu opengl 安装

安装相应的库&#xff1a; sudo apt-get install build-essential libgl1-mesa-dev sudo apt-get install freeglut3-dev sudo apt-get install libglew-dev libsdl2-dev libsdl2-image-dev libglm-dev libfreetype6-dev 实例&#xff1a; #include "GL/glut.h" void…

分享一病毒源代码,破坏MBR,危险!!仅供学习参考,勿运行(vc++2010已编译通过)

我在编译的时候&#xff0c;杀毒软件提示病毒并将其拦截&#xff0c;所以会导致编译不成功。 1>D:\c工程\windows\windows\MBR病毒.cpp : fatal error C1083: 无法打开编译器中间文件:“C:\Users\lenovo\AppData\Local\Temp\_CL_953b34fein”: Permission denied 1> 1>…

HTTP请求错误400、401、402、403、404、405、406、407、412、414、500、501、502解析

【转载】本文来自 chenxinchongcn 的CSDN 博客 &#xff0c;全文地址请点击&#xff1a;https://blog.csdn.net/chenxinchongcn/article/details/54945998?utm_sourcecopy HTTP 错误 400 400 请求出错 由于语法格式有误&#xff0c;服务器无法理解此请求。不作修改&#xff0…

数据科学家 数据工程师_数据科学家实际上赚了多少钱?

数据科学家 数据工程师目录 (Table of Contents) Introduction 介绍 Junior Data Scientist 初级数据科学家 Mid-Level Data Scientist 中级数据科学家 Senior Data Scientist 资深数据科学家 Additional Compensation 额外补偿 Summary 摘要 介绍 (Introduction) The lucrativ…

Spring Cloud构建微服务架构-Hystrix监控面板

在Spring Cloud中构建一个Hystrix Dashboard非常简单&#xff0c;只需要下面四步&#xff1a;愿意了解源码的朋友直接求求交流分享技术 一零三八七七四六二六 创建一个标准的Spring Boot工程&#xff0c;命名为&#xff1a;hystrix-dashboard。 编辑pom.xml&#xff0c;具体依赖…

Google 地图 API 参考

杨航收集技术资料&#xff0c;分享给大家 Google 地图 API 参考 Google 地图 API 现在与 Google AJAX API 载入器集成&#xff0c;后者创建了一个公共命名空间&#xff0c;以便载入和使用多个 Google AJAX API。该框架可让您将可选 google.maps.* 命名空间用于当前在 Google …

spotify歌曲下载_使用Spotify数据预测哪些“ Novidades da semana”歌曲会成为热门歌曲

spotify歌曲下载TL; DR (TL;DR) Spotify is my favorite digital music service and I’m very passionate about the potential to extract meaningful insights from data. Therefore, I decided to do this article to consolidate my knowledge of some classification mod…

Hook技术之Hook Activity

一、Hook技术概述 Hook技术的核心实际上是动态分析技术&#xff0c;动态分析是指在程序运行时对程序进行调试的技术。众所周知&#xff0c;Android系统的代码和回调是按照一定的顺序执行的&#xff0c;这里举一个简单的例子&#xff0c;如图所示。 对象A调用类对象B&#xff0c…

(第三周)周报

此作业要求https://edu.cnblogs.com/campus/nenu/2018fall/homework/2143 1.本周PSP 总计&#xff1a;1422 min 2.本周进度条 (1)代码累积折线图 (2)博文字数累积折线图 4.PSP饼状图 转载于:https://www.cnblogs.com/gongylx/p/9761852.html

功能测试代码python_如何使您的Python代码更具功能性

功能测试代码pythonFunctional programming has been getting more and more popular in recent years. Not only is it perfectly suited for tasks like data analysis and machine learning. It’s also a powerful way to make code easier to test and maintain.近年来&am…

layou split 属性

layou split&#xff1a;true - 显示侧分栏 转载于:https://www.cnblogs.com/jasonlai2016/p/9764450.html

BZOJ4503:两个串(bitset)

Description 兔子们在玩两个串的游戏。给定两个字符串S和T&#xff0c;兔子们想知道T在S中出现了几次&#xff0c;分别在哪些位置出现。注意T中可能有“?”字符&#xff0c;这个字符可以匹配任何字符。Input 两行两个字符串&#xff0c;分别代表S和TOutput 第一行一个正整数k&…

C#Word转Html的类

C#Word转Html的类/**//******************************************************************** created: 2007/11/02 created: 2:11:2007 23:13 filename: D:C#程序练习WordToChmWordToHtml.cs file path: D:C#程序练习WordToChm file bas…

分库分表的几种常见形式以及可能遇到的难题

前言 在谈论数据库架构和数据库优化的时候&#xff0c;我们经常会听到“分库分表”、“分片”、“Sharding”…这样的关键词。让人感到高兴的是&#xff0c;这些朋友所服务的公司业务量正在&#xff08;或者即将面临&#xff09;高速增长&#xff0c;技术方面也面临着一些挑战。…

iOS 钥匙串的基本使用

级别&#xff1a; ★☆☆☆☆ 标签&#xff1a;「钥匙串」「keychain」「iOS」 作者&#xff1a; WYW 审校&#xff1a; QiShare团队 前言 &#xff1a; 项目中有时会需要存储敏感信息&#xff08;如密码、密钥等&#xff09;&#xff0c;苹果官方提供了一种存储机制--钥匙串&a…