Java中的异常处理与抛出
一、异常处理
程序运行过程中出现的,导致程序无法继续运行的错误叫做异常。
Java中有多种异常,所有异常的父类是Throwable,他主要有两个子类Error和Exception。
Error一般是JVM出现问题,不用处理,也无法处理。
Exception下有多个子类,但主要分为两种。一种是RuntimeException,这种异常可以处理也可以不处理
另一种是非RuntimeException,这种异常必须处理。
常见的RuntimeException:
1、NullPointerException (空指针异常)
2、IndexOutOfBoundsException (数组下标越界异常)
3、NumberFormatException (数据格式异常)
4、ClassCastException (类型转换异常)
5、IllegalArgumentException (非法参数异常)
6、ArithmeticException (算数异常)
7、IllegalStateException (非法语句异常)
这里列举两个例子:
NullPointerException 示例:
package None6;public class Test {int a;public int show() {return 0;} }package None6;public class TestIt {//仅声明test,并未创建对象 Test test;test.show(); }
这里test仅声明并未实际指向某个对象,空指针无法调用不属于他的方法,所以在后一条代码实际调用show()方法时会报空指针异常。
IndexOutOfBoundsException 示例:
package None6;public class TestIt {public static void main(String[] args) {int[] a = new int[3];a[0] = 0;a[1] = 1;a[2] = 2;a[3] = 3;}}
这里ArrayIndexOutOfBoundsException异常是IndexOutOfBoundsException异常的子类。
需要处理的异常可用try catch来处理:
package None7;public class math {public static int add(String a,String b) {int sum = Integer.parseInt(a);sum+=Integer.parseInt(b);return sum;} }package None7;public class testit {public static void main(String[] args) {// TODO Auto-generated method stubSystem.err.println(math.add("100", "100"));}}
例如本示例中,当add()方法中的参数为数字时不会出现异常,但当参数中出现字母之类的字符时可能会抛出异常
处理办法;
package None7;public class math {public static int add(String a,String b) {try {int sum = Integer.parseInt(a);sum+=Integer.parseInt(b);return sum;} catch (Exception e) {// TODO: handle exception//打印出错信息 System.err.println(e.getMessage());}finally{System.err.println("结束!");}return 0;} }package None7;public class testit {public static void main(String[] args) {// TODO Auto-generated method stubSystem.err.println(math.add("100a", "100"));}}
结果为:
二、抛出异常
上面讲了,非RuntimeException异常必须处理,而我们当时如果不知道怎处理或者暂时不想处理时可用throw向上一级一级抛出,最终会抛给虚拟机处理。
示例:
结果:
这个例子中动态加载类123时,因为123类不存在所以会报错,然后将用throw将这个错误抛出。
这个错误首先抛出给主函数入口,然后再抛出给虚拟机。
如有错误,希望大家能指正,感谢!
努力努力再努力!
转载于:https://www.cnblogs.com/lemonxu/p/10349519.html
Java中的异常处理与抛出相关推荐
- java 异常 不抛,java中不捕获或抛出的异常
java中不捕获或抛出的异常 发布时间:2020-06-25 14:29:16 来源:亿速云 阅读:137 作者:Leah 这期内容当中小编将会给大家带来有关java中不捕获或抛出的异常,文章内容丰富 ...
- java 如何捕获线程中的异常处理_如何捕获Java中另一个线程抛出的异常?
参见英文答案 > How to catch an Exception from a thread 14个 我正在使用一个创建 ...
- 第八节:详细讲解Java中的异常处理情况与I/O流的介绍以及类集合框架
前言 大家好,给大家带来详细讲解Java中的异常处理情况与I/O流的介绍以及类集合框架的概述,希望你们喜欢 JAVA 异常 try...catch...finally结构的使用方法 class Tes ...
- 【Java】Java中的异常处理:何时抛出异常,何时捕获异常?
参考文章:Java中的异常处理:何时抛出异常,何时捕获异常? 参考文章:Python错误处理-廖雪峰的官方网站 1 异常分类 Throwable对象可以分为两组: 一组是unchecked异常,异常处 ...
- java中的异常处理语句_Java中实现异常处理的基础知识
Java中实现异常处理的基础知识 异常 (Exception):发生于程序执行期间,表明出现了一个非法的运行状况.许多JDK中的方法在检测到非法情况时,都会抛出一个异常对象. 例如:数组越界和被0除. ...
- Java提高篇——Java中的异常处理
对于运行时异常.错误和检查异常,Java技术所要求的异常处理方式有所不同. 由于运行时异常及其子类的不可查性,为了更合理.更容易地实现应用程序,Java规定,运行时异常将由Java运行时系统自动抛出, ...
- 【java基础】java异常,捕获与抛出
java异常,捕获与抛出 1.概念: 在java里,所有的异常都有一个共同的祖先Throwable(可抛出). Throwable:有两个重要的子类:Exception(异常)和Error(错误). ...
- java异常处理怎么加_带你了解Java中的异常处理(上)
当当当当当当,各位看官,好久不见,甚是想念. 今天我们来聊聊Java里的一个小妖精,那就是异常. 什么是异常?什么是异常处理? 异常嘛,顾名思义就是不正常,(逃),是Java程序运行时,发生的预料之外 ...
- 【Java面试题】21 Java中的异常处理机制的简单原理和应用。
[Java面试题]21 Java中的异常处理机制的简单原理和应用. 参考文章: (1)[Java面试题]21 Java中的异常处理机制的简单原理和应用. (2)https://www.cnblogs. ...
- Java中的异常处理:何时抛出异常,何时捕获异常?
Java中的异常处理:何时抛出异常,何时捕获异常? 参考文章: (1)Java中的异常处理:何时抛出异常,何时捕获异常? (2)https://www.cnblogs.com/tsiangleo/p/ ...
最新文章
- C++——新类型与原始字面量(原始字符串)
- 比特币的扩容问题:千军万马过独木桥!
- 互联网协议 — DNS 缓存机制
- 字符串转16进制字节数组,字节数组转16进制字符串
- 第七章:跨程序共享数据-探究内容提供器
- 关于安装完Node.js 出现node is not dedined 问题
- 拒绝假货!LVMH与普拉达、卡地亚联手推出区块链平台AURA
- Android 性能分析岗位,2021Android最新大厂面试真题总结,架构师必备技能
- JavaScript内置对象→对象、系统函数、Date日期对象、String字符串对象、Math对象、Number数字对象、Object对象、Boolean对象、Error对象
- PyTorch学习笔记(三):PyTorch主要组成模块
- 拓端tecdat|R语言时变向量自回归(TV-VAR)模型分析时间序列和可视化
- 组合,聚合,关联,依赖 的区别
- css实现接地气的checkbox框
- 本科最高5w!毕业生落户指南!18城市人才引进补贴
- c#锁定Excel工作表和单元格
- HDU 5285:wyh2000 and pupil
- 【数据结构与算法】动态规划
- 请问在深圳做美工的工资多少
- 计算机视觉学习6_棋盘格_相机模型与参数标定
- AI高考的信息检索策略
热门文章
- charts引入icon图片_如何在React中优雅的使用icon
- 一般家用监控多少钱_安装空调一般多少钱
- 力扣题目系列:1313. 解压缩编码列表
- 计算机仿真期末考试,2015年数学物理建模期末考试试题.docx
- CS224N刷题——Assignment3.2_Recurrent neural nets for NER
- 如何在Rancher 2.0上快速部署Datadog
- Nginx负载均衡与Tomcat使用Redis共享session配置
- PostgreSQL 11 preview - Faster partition pruning
- php+nginx环境 两错误解决
- 加速晶圆代工业务创新 开创智能互联世界