Java异常分类及处理

一、概念

如果某个方法不能按照正常的途径完成任务,就可以通过另一种路径退出方法。在这种情况下
会抛出一个封装了错误信息的对象。此时,这个方法会立刻退出同时不返回任何值。另外,调用
这个方法的其他代码也无法继续执行,异常处理机制会将代码执行交给异常处理器。

二、异常分类

Throwable 是 Java 语言中所有错误或异常的超类,在 Java 中只有 Throwable 类型的实例才可以被抛出(throw)或者捕获(catch),它是异常处理机制的基本组成类型。
实例分为 Error 和 Exception 两种。

2.1、Error

Error 类是指 java 运行时系统的内部错误和资源耗尽错误。应用程序不会抛出该类对象。如果
出现了这样的错误,除了告知用户,剩下的就是尽力使程序安全的终止。

2.2、Exception

Exception 又有两个分支 , 一个是运行时异常 RuntimeException , 一 个是检查异常 CheckedException。

RuntimeException 如 :NullPointerException 、 ClassCastException ;
CheckedException 如: I/O 错误导致的 IOException、SQLException。

RuntimeException 是那些可能在 Java 虚拟机正常运行期间抛出的异常的超类。 如果出现 RuntimeException,那么一
定是程序员代码书写导致的错误.

CheckedException:一般是外部错误,这种异常都发生在编译阶段,Java 编译器会强
制程序去捕获此类异常,即会出现要求你把这段可能出现异常的程序进行 try catch,该类异常一
般包括几个方面:

  1. 试图在文件尾部读取数据
  2. 试图打开一个错误格式的 URL
  3. 试图根据给定的字符串查找 class 对象,而这个字符串表示的类并不存在

三、异常的处理方式

3.1、不处理

遇到异常问题不进行具体处理,而是继续抛给调用者 (throw,throws)
抛出异常有三种形式,一是 throw,再就是 throws,还有一种系统自动抛异常。

public static void main(String[] args) {String s = "abc";if(s.equals("abc")) {// 手动抛出一个数字格式化异常throw new NumberFormatException();} else {System.out.println(s);}
}int div(int a,int b) throws Exception{return a/b;
}
3.2、处理

try catch 捕获异常针对性处理方式

####四、Throw 和 throws 的区别

throws 用在函数上,后面跟的是异常类,可以跟多个;

语法:(修饰符)(方法名)([参数列表])[throws(异常类)]{…}
public void doA(int a) throws Exception1,Exception3{…}

throw 用在函数内,后面跟的是异常对象。

throws E1,E2,E3只是告诉程序这个方法可能会抛出这些异常,方法的调用者可能要处理这些异常,而这些异常E1,E2,E3可能是该函数体产生的。
throw则是明确了这个地方要抛出这个异常。

结合来看:

void doA(int a) throws IOException,{try{......}catch(Exception1 e){throw e;}catch(Exception2 e){System.out.println("出错了!");}if(a!=b)throw new  Exception3("自定义异常");
}

throws 用来声明异常,让调用者知道该功能可能会出现的问题(比如上方的 IO 异常),可以给出预先的处理方式;
throw 抛出具体的问题对象,执行到 throw,功能就已经结束了,跳转到调用者,并将具体的问题对象抛给调用者。
也就是说 throw 语句独立存在时,下面不要定义其他语句,因为执行不到。

概括:
throws 表示出现异常的一种可能性,并不一定会发生这些异常;
throw 则是抛出了异常,执行 throw 则一定抛出了某种异常对象。

五、总结

了解 Exception、Error 两种异常的区别,面试可能会问。
区分 throws、throw使用维度。

如果文章有错的地方欢迎指正,大家互相留言交流。习惯在微信看技术文章,想要获取更多的Java资源的同学,可以关注微信公众号:niceyoo

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

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

相关文章

工作252:uniapp--实战--uview---tabber

第一步 <u-tabbar v-model"current" :list"list" :current"current" :mid-button"true" change"change"></u-tabbar> 第二步 export default {data() {return {list: [{iconPath: "home",selectedI…

导出数据之CSV

平常开发中&#xff0c;常见的需求就是导出数据为Excel&#xff0c;CSV格式的表格。所以&#xff0c;在此记录一下导出CSV数据的小方法 $fileName demo.csv; $data [[id>1,name>李,age>23],[id>2,name>行,age>13] ];exportCsv($fileName,$data,false);func…

css属性基础以及wxss——居中,渐变色边框,圆角边框,横向布局,重叠div,div固定在底部,input的无边框显示下划线

text-align: center;——子item居中对齐 display: flex;——子item横向布局 -webkit-justify-content: center;——子item居中 margin: auto;——子item居中 background: #f4f4f4;——背景色&#xff08;background-color: yellowgreen;&#xff09; opacity: 0.5;——透明…

Java反射机制概念及应用场景

Java反射机制概念及应用场景 Java的反射机制相信大家在平时的业务开发过程中应该很少使用到&#xff0c;但是在一些基础框架的搭建上应用非常广泛&#xff0c;今天简单的总结学习一下。 1. 什么是反射机制&#xff1f; Java反射机制是在运行状态中&#xff0c;对于任意一个类&…

eclipse链接mycat报数据源初始化失败

程序环境&#xff1a; maven eclispe mycat 1.6 mysql5.6 程序启动的时候报数据源初始化失败&#xff0c;错误日志如下&#xff1a; 2018-03-16 17:41:23 [ERROR]-[com.alibaba.druid.pool.DruidDataSource] dataSource init error java.sql.SQLException: java.lang.Illega…

微信小程序开发实战基础二、wxml模板,动态更新内联样式

1、模板使用 1、wxml中创建模板 <template name"msgItem"> <view> <text> {{index}}: {{msg}} </text> <text> Time: {{time}} </text> </view> </template> 2、js中准备数据 data: { item: { index: 0,…

DSO windowed optimization 代码 (3)

4 Schur Complement 部分信息计算 参考《DSO windowed optimization 公式》&#xff0c;Schur Complement 部分指 Hsc&#xff08;\(H_{X\rho} H_{\rho\rho}^{-1} H_{\rho X}\)&#xff09;和 bsc&#xff08;\(H_{X\rho} H_{\rho\rho}^{-1} J_{\rho}^T r\)&#xff09;。 4.1 …

Android 支付宝登录

实现效果&#xff1a; 截取authCode的方法 int startCity info.indexOf("authCode{") "authCode{".length(); int endCity info.indexOf("}", startCity); String code info.substring(startCity, endCity);//获取市Log.i("lgqshouqau…

python打造社工脚本

0x00前言&#xff1a; 大家都知道图片是有Exif信息的。里面包含着 你的GPS信息。还有拍摄时间等等的敏感信息。 0x01准备: exifread requests 0x02思路: 读取图片的Exif信息。 如果有GPS信息就将其扔到脚本的ip定位功能 0x03代码&#xff1a; import optparse from PIL import …

颓废的三天

颓废的三天 博客断更了&#xff0c;花了3天的时间终于把第一部《大江大东》看完了。 47集&#xff0c;晚上熬到3点半&#xff0c;身体特别累&#xff0c;所以这几天就没有再写东西。 豆瓣描述&#xff1a;宋运辉&#xff08;王凯饰&#xff09;天资聪颖&#xff0c;却出身不好…

Android 中英文语言切换

非常简便&#xff0c;只需替换一个文件再添加上去即可 strings和-zh文件链接&#xff1a;https://download.csdn.net/download/meixi_android/11367095 1、首先替换原strings文件 2、复制添加-zh文件 3、修改添加各个name对应中英文即可 4、切换手机设置里面语言选项即可切换A…

HTML文字格式化

转载于:https://www.cnblogs.com/yz9110/p/8594537.html

简单了解request与response

简单了解request与response 本文对 request、 response 简单描述&#xff0c;未涉及到具体的浏览器缓存、重定向、请求转发等代码部分。 一、Web服务器&#xff0c;浏览器&#xff0c;代理服务器 在看 response、request 对象之前&#xff0c;先来了解一下 Web服务器&#xff…

Android 自定义阴影,自定义颜色样式

阴影效果样式&#xff1a; 实现方法&#xff1a; 1、创建自定义属性——attrs.xml文件 <?xml version"1.0" encoding"utf-8"?> <resources><declare-styleable name"ShadowContainer"><attr name"containerShadow…

C高级第一次PTA作业(2)

6-1 在数组中查找指定元素 本题要求实现一个在数组中查找指定元素的简单函数。 1.设计思路 &#xff08;1&#xff09;算法&#xff1a; 第一步&#xff1a;定义一个数组名为a的数组&#xff0c;循环变量i&#xff0c;需要查找的数x&#xff0c;和数组元素的个数n。 第二步&…