Java小记——异常机制
目录
运行期异常
编译期异常
throw
Erro 错误,严重性问题,你无法去捕获处理 比如内存溢出了
Exception 一般性问题,一般我们可以自己去捕获处理
编译期异常:发生在编译期间,非RuntimeException及其子类,必须解决,
运行期异常:RuntimeException及其子类 发生在运行期间,可以解决也可以不解决
运行期异常
//运行期异常:发生在运行期间,RuntimeException及其子类都是运行期异常,可以解决也可以不解决int a = 1;int b = 0;System.out.println(a / b);//运行期异常,如果你自己没有捕获处理,那是交由JVM,来进行默认处理.//JVM默认处理异常的方式,是打印异常的堆栈信息,然后退出JVM//很显然,JVM 默认处理异常的方式不够友好,如果想要更加友好,我们可以自己捕获异常去处理。System.out.println("下面的代码");System.out.println("下面的代码");System.out.println("下面的代码"); //执行不了
处理异常
int a = 1;int b = 0;try {//他里面放的是有可能会出现问题的代码System.out.println(a / 0);} catch (ArithmeticException e) { //ArithmeticException你要捕获的何种异常。//处理异常的逻辑,必须写,哪怕就是以后输出语句,不要空处理System.out.println("除数为0了");}//我们自己如何来处理运行期异常System.out.println("下面的代码");System.out.println("下面的代码");System.out.println("下面的代码"); //除数为0了下面的代码下面的代码下面的代码
int a = 1;int b = 0;int[] arr = {1, 2};try {System.out.println(a / b); //捕获住这个System.out.println(arr[3]); //就不再执行这个} catch (ArithmeticException e) {System.out.println("除数为0");e.printStackTrace(); //打印详细的堆栈信息} catch (ArrayIndexOutOfBoundsException e) {System.out.println("角标越界了");e.printStackTrace(); //打印详细的堆栈信息} catch (Exception e) {System.out.println("发生异常了");e.printStackTrace(); //打印详细的堆栈信息}System.out.println("下面的代码");System.out.println("下面的代码");System.out.println("下面的代码");除数为0
下面的代码
下面的代码
下面的代码
java.lang.ArithmeticException: / by zeroat org.slxy.demo.Demo01.MyTest.main(MyTest.java:11)
编译期异常
编译期异常:发生在编译期间,非RuntimeException及其子类
编译期异常,必须解决,不解决程序无法执行。
编译期异常处理方式:
1.向上抛出,抛给调用者,谁调用,谁处理,俗称甩锅。
2.自己try 捕获处理
try {
MyDateUtils.test();
} catch (ParseException e) {
e.printStackTrace();
}
finally {
//一般有些善后工作,需要做,就可以放到finallys
System.out.println("finally里面的代码,就是不管你有没有发生异常,都会执行");
}
finally的作用: 用于释放资源
throw
在方法内部进行抛出
public class MyTest {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("请输入第一个整数");int a = sc.nextInt();System.out.println("请输入第二个整数");int b = sc.nextInt();int r = chufa(a, b);System.out.println(r);}private static int chufa(int a, int b) {if (b == 0) {//在方法内部进行异常的抛出throw new ArithmeticException("除数为0");} else {return a / b;}}
}
自定义异常
//自定义的异常类,纳入到Java异常体系
public class ScoreException extends RuntimeException {public ScoreException() {}public ScoreException(String message) {super(message);}
}public class MyTest {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("请录入你的成绩 0---100");int score = sc.nextInt();int cj = inputScore(score);System.out.println(cj);}private static int inputScore(int score) {if (score >= 0 && score <= 100) {return score;} else {throw new ScoreException("成绩不合法");}}
}
1.子类在重写父类方法时,父类方法没有抛出异常,子类不能抛出异常
2.父类方法有抛出异常,子类在重写父类方法时可以抛出和父类一样的异常,也可以不抛出
3.父类方法有抛出异常,子类在重写父类方法时可以抛出异常,但是异常不能比父类大
Java小记——异常机制相关推荐
- java的异常机制面试题(转)
java的异常机制面试题(转) 参考文章: (1)java的异常机制面试题(转) (2)https://www.cnblogs.com/ffaiss/p/11434639.html 备忘一下.
- 聊聊Java的异常机制问题
本文分享自华为云社区<Java知识点问题精选之异常机制>,原文作者:breakDraw . java异常指在程序运行时可能出现的一些错误,如:文件找不到.网络连接失败.非法参数等.异常是一 ...
- 简述java的异常机制_JAVA异常机制简述
1.类的继承结构 在JAVA所有的异常对象都是Throwable类的一个子类的实例 Exception包含两个分支,由于程序错误导致的异常属于RuntimeException,比如数组下标越界,空指针 ...
- Java基础-异常机制
异常( Exception 也称例外)就是在程序的运行过程中所发生的不正常的事件,它会中 断正在运行的程序 所需文件找不到 网络连接不通或中断 算术运算错 (被零除-) 数组下标越界 装载一个不存在的 ...
- CC00069.bigdatajava——|Java集合类库.V05|——|Java.v05|异常机制.v50|异常抛出|补充|
一.异常抛出 ### --- 基本概念--> 在某些特殊情况下有些异常不能处理或者不便于处理时, --> 就可以将该异常转移给该方法的调用者,这种方法就叫异常的抛出. --> 当方法 ...
- java 异常机制_深入理解Java异常处理机制
一.引子 try-catch-finally恐怕是大家再熟悉不过的语句了,而且感觉用起来也是很简单,逻辑上似乎也是很容易理解.不过,我亲自体验的"教训"告诉我,这个东西可不是想象中 ...
- 异常处理器详解 Java多线程异常处理机制 多线程中篇(四)
在Thread中有异常处理器相关的方法 在ThreadGroup中也有相关的异常处理方法 示例 未检查异常 对于未检查异常,将会直接宕掉,主线程则继续运行,程序会继续运行 在主线程中能不能捕获呢? 我 ...
- Java异常之异常机制
2019独角兽企业重金招聘Python工程师标准>>> Java异常处理机制依赖5个关键字try,catch,finally,throw,throws.try关键字后跟着可能出现异常 ...
- Java基础:异常机制
最近开始了找工作的面试,在面试过程中,面试官问了关于Java当中的异常处理机制,一直以来,无论写代码还是看书,自己对异常处理这一块就没有很好的重视过,对它的认知也仅仅停留在通过Try-catch去进行 ...
最新文章
- 一文看懂人脸识别(4个特点+4个实现步骤+5个难点+算法发展轨迹)
- [My B.S paper draft]我的本科答辩论文草稿
- 全球与中国自行车和零件制造市场发展规划及未来投资趋势展望报告2021年版
- 关于Jquery中ajax方法data参数用法的总结
- 2020云栖大会,宜搭发布专业开发者能力,助力政企数字化转型——阿里云开发者社区
- 【LeetCode笔记】79. 单词搜索 剑指 Offer 12 矩阵中的路径(Java、dfs)
- iOS调用 AlipaySDK 支付宝找不到头文件openssl/rsa.h 的解决方案
- AndroidStudio_HttpServer类接收到数据以后_通过广播给对应Activity发送接收到是远程服务器的数据---Android原生开发工作笔记226
- 清空select下拉框的方法
- php遍历文件夹(获得文件名)
- Load Average (系统负载)
- 遗传算法及c++实现
- greensock下载_GreenSock动画平台初学者指南
- vs2013下载地址以及安装方法
- python中无法安装xpath库,Python爬虫 | xpath的安装
- php抢票程序,HTML实现抢票功能(设定时间打开抢票的页面)
- matlab之运动目标检测
- 计算机管理的磁盘管理简单卷,小编教你磁盘管理新建简单卷怎么做
- 为什么不建议用Executors?
- 如何在未越狱的ios系统安装ipa文件
热门文章
- ARP欺骗:使用工具:arpspoof、driftnet和ettercap
- android应用开发-从设计到实现 3-3 Sketch静态原型设计
- C++设计模式实例讲解
- NLP常见语言模型及数据增强方法总结
- 电脑总是重装系统对硬件到底有没有损害?看完这篇你就会有答案!
- [信息论]信道容量迭代算法程序设计(基于C++Matlab实现)
- 第二届电气、机械与计算机工程国际学术会议(ICEMCE2018)简单记录
- 毕业设计 单片机智能温控农业大棚系统 - 物联网 嵌入式
- visio2007小技巧
- 基于HTML(服装商城)电商项目项目的设计与实现(html前端源码和论文设计)