JAVA抛出异常的三种形式
一、系统自动抛出异常
当程序语句出现一些逻辑错误、主义错误或者类型转换错误时,系统会自动抛出异常
例一
public static void main(String[] args) {int a = 5;int b = 0;System.out.println( a / b);
}
运行结果,系统会自动抛出ArithmeticException
异常
Exception in thread "main" java.lang.ArithmeticException: / by zeroat io.renren.modules.sys.controller.SysUserController.main(SysUserController.java:154)
例二
public static void main(String[] args) {String str = "abc";System.out.println(Integer.parseInt(str));
}
运行结果,系统会抛出NumberFormatException
异常
Exception in thread "main" java.lang.NumberFormatException: For input string: "abc"at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)at java.lang.Integer.parseInt(Integer.java:580)at java.lang.Integer.parseInt(Integer.java:615)at io.renren.modules.sys.controller.SysUserController.main(SysUserController.java:153)
二、throw
throw是语句抛出一个异常,一般是在代码的内部,当程序出现某种逻辑错误时同程序主动抛出某种特定类型的异常
public static void main(String[] args) {String str = "NBA";if (str.equals("NBA")) {throw new NumberFormatException();} else {System.out.println(str);}
}
运行结果,系统会抛出NumberFormatException
异常
Exception in thread "main" java.lang.NumberFormatExceptionat io.renren.modules.sys.controller.SysUserController.main(SysUserController.java:154)
三、throws
throws是方法可能会抛出一个异常(用在声明方法时,表示该方法可能要抛出异常)
public void function() throws Exception{......}
当某个方法可能会抛出某种异常时用于throws 声明可能抛出的异常,然后交给上层调用它的方法程序处理
public static void testThrows() throws NumberFormatException {String str = "NBA";System.out.println(Integer.parseInt(str));
}public static void main(String[] args) {try {testThrows();} catch (NumberFormatException e) {e.printStackTrace();System.out.println("非数直类型不能强制类型转换");}
}
运行结果
java.lang.NumberFormatException: For input string: "NBA"at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)at java.lang.Integer.parseInt(Integer.java:580)at java.lang.Integer.parseInt(Integer.java:615)at io.renren.modules.sys.controller.SysUserController.testThrows(SysUserController.java:153)at io.renren.modules.sys.controller.SysUserController.main(SysUserController.java:158)
非数直类型不能强制类型转换
throw与throws的比较
1、throws出现在方法函数头,而throw出现在函数体。
2、throws表示出现异常的一种可能性,并不一定会发生这些异常,throw则是抛出了异常,执行throw则一定抛出了某种异常对象。
3、两者都是消极处理异常的方式(这里的消极并不是说这种方式不好),只是抛出或者可能抛出异常,但不会由函数去处理异常,真正的处理异常由函数的上层调用处理。
编程习惯
1、在写程序时,对可能会出现异常的部分通常要用try{…}catch{…}去捕捉它并对它进行处理;
2、用try{…}catch{…}捕捉了异常之后一定要对在catch{…}中对其进行处理,那怕是最简单的一句输出语句,或栈输入e.printStackTrace();
3、如果是捕捉IO输入输出流中的异常,一定要在try{…}catch{…}后加finally{…}把输入输出流关闭;
4、如果在函数体内用throw抛出了某种异常,最好要在函数名中加throws抛异常声明,然后交给调用它的上层函数进行处理。
最后推荐一款分分钟在线搭建SpringBoot + Mybatis框架
地址:https://blog.csdn.net/qq_22067469/article/details/90523169
JAVA抛出异常的三种形式相关推荐
- JAVA注释的三种形式及快捷键
一.java注释的三种形式: 1.单行注释: 以双斜杠 " // " 标识,只能注释一行内容,用在注释信息内容少的地方; 2.多行注释: 包含在 " /* " ...
- java注释的三种形式讲解1.2
java注释的三种形式分别是什么 java注释的三种形式分别是:1.单行注释,如[//单行注释]:2.多行注释,如[/*多行注释*/]:3.文档注释,如[/**@author*/]. JAVA的注释共 ...
- java三种注释_java注释的三种形式分别是什么
java注释的三种形式分别是:1.单行注释,如[//单行注释]:2.多行注释,如[/*多行注释*/]:3.文档注释,如[/**@author*/]. JAVA的注释共有三种形式:单行注释.多行注释.文 ...
- java ajax 输出_正本清源:所谓Ajax输出的三种形式
# re: 正本清源:所谓Ajax输出的三种形式 回复 更多评论 2005-12-30 23:19 by Vinson Buffolo did a great job to provide an ...
- java光标移动函数_文件内光标的移动 函数基础 定义函数的三种形式 函数的返回值 调用方式...
# with open(r'a.txt', 'r', encoding='utf-8')as f: # data1=f.read() # print('>1>:',data1) # pri ...
- JSP文件中Java代码的几种形式(JSP脚本)
文章目录 第一种形式(Java 代码片段) 第二种形式(JSP 表达式) 第三种形式(JSP 声明) 第四种形式(JSP 指令) 第一种形式(Java 代码片段) 原样复制到 service() 方法 ...
- php数组书写形式,php数组(array)输出的三种形式讲解
php数组(array)输出的三种形式讲解 发布于 2015-01-30 15:57:43 | 119 次阅读 | 评论: 0 | 来源: 网友投递 PHP开源脚本语言PHP(外文名: Hyperte ...
- Ringtone的两种类型三种形式
文章目录 Ringtone 的两中类型三种形式 两种类型 三种形式 1 最常见的uri形式 2 Settings数据库中的uri形式 3 Android 4.4以后增加了document uri 返回 ...
- FMDB使用的数据库的三种形式
FMDB使用的数据库的三种形式 FMDB是iOS平台下一款优秀的第三方SQLite数据库框架.它以Objective-C的方式封装了SQLite的C语言API.使用起来,它更加面向对象,避免冗余的C语 ...
- 批量梯度下降 linux,梯度下降的三种形式BGD,SGD,MBGD(MSGD)
梯度下降的三种形式BGD,SGD,MBGD: Batch gradient descent: Use all examples in each iteration: Stochastic gradie ...
最新文章
- 【Android】自定义listview快速滚动条
- js 判断多个关键词_2020关键词优化,做好这三点效果立现!
- 怎么用centos7运行c语言程序_写C语言程序,如何提升程序运行效率?我的一点经验分享给你们!...
- istio_关于Istio的五件事
- LeetCode 排序和搜索简单部分 Python实现
- Maven知识- repositories
- Linux多线程工作笔记0001---多线程知识介绍
- web前端-----跨域
- OpenCV morphologyEx、erode、dilate、getStructuringElement (形态学算子)
- Hibernate的SQL查询
- R语言非度量多维标尺排序NMDS及一般加性模型GAM映射教程
- 使用 关键字来创建python自定义函数_python 自定义函数
- WordPress丸子小程序从零到一搭建小程序[小程序配置]
- 基于觅食生境选择的改进粒子群算法-附代码
- shell for循环命令行_七年老运维实战中的 Shell 开发经验总结
- OSI(open system internet)七层模型介绍以及NAT(Network Address Translation)技术详解
- shopee引流方式有哪些,商家如何为自己店铺做引流?
- 深入理解计算机视觉中的损失函数
- 2017 ccpc网络预选赛 CaoHaha's staff
- 分式相乘转换成分式加减的一般性方法的简单讨论
热门文章
- 解决go get时,遇到unrecognized import path的问题
- python pkl、npy数据转换为csv
- echarts + vue2.0 实现大数据监测态势感知系统
- SQL Server 修改字段名
- python豆瓣250爬取
- 酞菁-氧化石墨烯(NiPc- NHCO-EGO),复合酞菁材料齐岳生物供应
- Python实现毫秒级抢单,6翻了!
- SQL实现对销售表现重要指标的计算,对用户特征分层看销售贡献,并统计消费的二八法则
- c++中计算2得n次方_【复习专题】解析二元一次方程知识点及应用
- php中求解二元一次方程,PHP实现二元一次方程式的求解