一、系统自动抛出异常

当程序语句出现一些逻辑错误、主义错误或者类型转换错误时,系统会自动抛出异常
例一

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抛出异常的三种形式相关推荐

  1. JAVA注释的三种形式及快捷键

    一.java注释的三种形式: 1.单行注释: 以双斜杠 " // " 标识,只能注释一行内容,用在注释信息内容少的地方; 2.多行注释: 包含在 " /* " ...

  2. java注释的三种形式讲解1.2

    java注释的三种形式分别是什么 java注释的三种形式分别是:1.单行注释,如[//单行注释]:2.多行注释,如[/*多行注释*/]:3.文档注释,如[/**@author*/]. JAVA的注释共 ...

  3. java三种注释_java注释的三种形式分别是什么

    java注释的三种形式分别是:1.单行注释,如[//单行注释]:2.多行注释,如[/*多行注释*/]:3.文档注释,如[/**@author*/]. JAVA的注释共有三种形式:单行注释.多行注释.文 ...

  4. java ajax 输出_正本清源:所谓Ajax输出的三种形式

    # re: 正本清源:所谓Ajax输出的三种形式  回复  更多评论 2005-12-30 23:19 by Vinson Buffolo did a great job to provide an ...

  5. java光标移动函数_文件内光标的移动 函数基础 定义函数的三种形式 函数的返回值 调用方式...

    # with open(r'a.txt', 'r', encoding='utf-8')as f: # data1=f.read() # print('>1>:',data1) # pri ...

  6. JSP文件中Java代码的几种形式(JSP脚本)

    文章目录 第一种形式(Java 代码片段) 第二种形式(JSP 表达式) 第三种形式(JSP 声明) 第四种形式(JSP 指令) 第一种形式(Java 代码片段) 原样复制到 service() 方法 ...

  7. php数组书写形式,php数组(array)输出的三种形式讲解

    php数组(array)输出的三种形式讲解 发布于 2015-01-30 15:57:43 | 119 次阅读 | 评论: 0 | 来源: 网友投递 PHP开源脚本语言PHP(外文名: Hyperte ...

  8. Ringtone的两种类型三种形式

    文章目录 Ringtone 的两中类型三种形式 两种类型 三种形式 1 最常见的uri形式 2 Settings数据库中的uri形式 3 Android 4.4以后增加了document uri 返回 ...

  9. FMDB使用的数据库的三种形式

    FMDB使用的数据库的三种形式 FMDB是iOS平台下一款优秀的第三方SQLite数据库框架.它以Objective-C的方式封装了SQLite的C语言API.使用起来,它更加面向对象,避免冗余的C语 ...

  10. 批量梯度下降 linux,梯度下降的三种形式BGD,SGD,MBGD(MSGD)

    梯度下降的三种形式BGD,SGD,MBGD: Batch gradient descent: Use all examples in each iteration: Stochastic gradie ...

最新文章

  1. 【Android】自定义listview快速滚动条
  2. js 判断多个关键词_2020关键词优化,做好这三点效果立现!
  3. 怎么用centos7运行c语言程序_写C语言程序,如何提升程序运行效率?我的一点经验分享给你们!...
  4. istio_关于Istio的五件事
  5. LeetCode 排序和搜索简单部分 Python实现
  6. Maven知识- repositories
  7. Linux多线程工作笔记0001---多线程知识介绍
  8. web前端-----跨域
  9. OpenCV morphologyEx、erode、dilate、getStructuringElement (形态学算子)
  10. Hibernate的SQL查询
  11. R语言非度量多维标尺排序NMDS及一般加性模型GAM映射教程
  12. 使用 关键字来创建python自定义函数_python 自定义函数
  13. WordPress丸子小程序从零到一搭建小程序[小程序配置]
  14. 基于觅食生境选择的改进粒子群算法-附代码
  15. shell for循环命令行_七年老运维实战中的 Shell 开发经验总结
  16. OSI(open system internet)七层模型介绍以及NAT(Network Address Translation)技术详解
  17. shopee引流方式有哪些,商家如何为自己店铺做引流?
  18. 深入理解计算机视觉中的损失函数
  19. 2017 ccpc网络预选赛 CaoHaha's staff
  20. 分式相乘转换成分式加减的一般性方法的简单讨论

热门文章

  1. 解决go get时,遇到unrecognized import path的问题
  2. python pkl、npy数据转换为csv
  3. echarts + vue2.0 实现大数据监测态势感知系统
  4. SQL Server 修改字段名
  5. python豆瓣250爬取
  6. 酞菁-氧化石墨烯(NiPc- NHCO-EGO),复合酞菁材料齐岳生物供应
  7. Python实现毫秒级抢单,6翻了!
  8. SQL实现对销售表现重要指标的计算,对用户特征分层看销售贡献,并统计消费的二八法则
  9. c++中计算2得n次方_【复习专题】解析二元一次方程知识点及应用
  10. php中求解二元一次方程,PHP实现二元一次方程式的求解