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去进行 ...
最新文章
- CSS将长文字换行的方法 (转)
- Leangoo阶段式(瀑布式)游戏产品研发
- SpringMVC如何实现restful接口
- 一个普通摄像头就让二次元老婆“活”了过来,网友:求收费
- 报错,can‘t found the source action, can‘t run the graph[fatal.flow]
- [Python+debug] 设置Python环境变量-Windows10
- 点至直线的距离和垂足点计算
- android 方法不会覆盖或实现超类型的方法,React Native Android:方法不会覆盖或实现超类型的方法...
- php openoffice,php实现openoffice转pdf的方法
- 获取中国各省市区县经纬度的方法
- 解决 CAP_IMAGES: can‘t find starting number (in the name of file)
- 解决RequestMapping写在类上页面跳转失败
- 为什么输入法显示中文打不出中文_搜狗中文输入无法显示汉字怎么办_win10搜狗输入法打不出汉字的解决方法...
- mPaas苹果客户端离线包引入http的js白屏问题解决办法
- 分享个免费的图文识别orc接口
- 如何检查Linux系统下的Virtio 驱动
- 软件的升级及卸载原理
- 【数据结构(2)】1.2 数据结构的基本概念和术语
- pgbouncer 使用
- 赌王(比赛2第三题)