关于java中异常机制
什么是异常:异常就是程序在运行时出现的不正常情况。对于严重的情况Java通过Error类进行描述,一般不用编写代码处理;对于不严重的情况Java通过Exception描述,一般编写针对性代码对其进行处理。
异常由来:问题也是生活中一个具体的事物,也可以通过Java类的形式进行描述(比如进行运算时被除数不可以为0否则出现ArithmeticException异常,数组越界会出现ArrayIndexOutOfBoundsException等等),并封装成对象。即Java对不正常情况进行描述后的对象体现。简单来说是Java万物皆对象思想的体现。
异常的意义:Java的" 异常机制"就是在处理各类问题时给了程序员非常简单而灵活的方式。一般来说,其它高级语言主要是让函数使用者来关注该函数可能会出现的异常情况,而 java则是把这件事情交给方法的设计者来做。这对于方法的使用者来说带来的方便是不会因为责任心不强,或者办事丢三那四,会忘了在使用方法时处理可能发生的异常情况。
异常处理方法:Java提供特有的语句进行处理异常。
try{
需要被检测的代码。
}
catch(异常类 变量){
处理异常的代码。
}
finally{
一定会执行的语句。
}
throws:声明方法可能要抛出的异常。
throw:手动抛出异常。
代码部分:(以被除数为0为例)
//1.首先定义一个异常类
public class Div {
public int div(int a,int b)throws Exception{
//功能上通过throws 关键字声明该功能可能出现问题。
//调用者必须在主函数抛出此异常(throws Exception)或者捕获该异常(try catch)
return a/b;
}
//2.调用含有异常类的方法
public class DivDemo {
public static void main(String[] args) {
Div d = new Div();
try {
int x = d.div(6, 0);
System.out.println("x=" + x);
} catch (Exception e) {
System.out.println("除数不能为零");
System.out.println(e.getMessage());// 显示:/ by zero
System.out.println(e.toString());// 显示:异常名称
e.printStackTrace();//显示: 异常名称,异常信息,异常出现的位置。
//jvm虚拟机默认的异常处理机制,调用printStackTrace()方法。打印异常堆栈的跟踪信息。
} finally{
System.out.println("over");//程序一定会执行的代码。
}
}
自定义异常:项目中出现特有的异常,这些异常没有被Java描述并封装进对象。
对这些特有的异常问题可以按照Java对问题封装的思想。将特有的问题。进行自定义封装
当函数内部出现throw抛出异常对象,那么就必须对应的处理动作。(1.try catch 2.函数上声明让调用者处理)。
异常在子类覆盖中的体现:
①子类覆盖父类时,如果父类方法抛出异常,那么子类的覆盖方法,只能抛出父类的异常或该异常的子类。
②父类方法抛出多个异常,那么子类在覆盖该方法时,只能抛出父类异常的子集。
③如果父类或者接口的方法没有抛出异常,那么子类在覆盖方法时,也不可以抛出异常。
④如果子类方法发生了异常。就必须进行try处理,绝对不能抛出。
关于java中异常机制的更多相关文章
- Java的异常机制
Java的异常机制 (一)异常的概念 异常是指程序在编译或运行时出现的导致程序不能继续编译或运行的状况.. (二)Throwable类 Throwable类继承自Object类,是Java中所有错误或 ...
- 《java中异常和错误》
异常和错误的区别. 异常: 在Java中程序的错误主要是语法错误和语义错误,一个程序在编译和运行时出现的错误我们统一称之为异常,它是VM(虚拟机)通知你的一种方式,通过这种方式,VM让你知道,你(开发 ...
- java中线程机制
java中线程机制,一开始我们都用的单线程.现在接触到多线程了. 多线性首先要解决的问题是:创建线程,怎么创建线程的问题: 1.线程的创建: 四种常用的实现方法 1.继承Thread. Thread是 ...
- 浅谈java中异常抛出后代码是否会继续执行
问题 今天遇到一个问题,在下面的代码中,当抛出运行时异常后,后面的代码还会执行吗,是否需要在异常后面加上return语句呢? public void add(int index, E element) ...
- 深入理解 Java 中 SPI 机制
本文首发于 vivo互联网技术 微信公众号 链接:https://mp.weixin.qq.com/s/vpy5DJ-hhn0iOyp747oL5A作者:姜柱 SPI(Service Provider ...
- java中异常的抛出:throw throws
java中异常的抛出:throw throws Java中的异常抛出 语法: public class ExceptionTest{ public void 方法名(参数列表) throws 异常列表 ...
- Java中异常关键字throw和throws使用方式的理解
Java中应用程序在非正常的情况下停止运行主要包含两种方式: Error 和 Exception ,像我们熟知的 OutOfMemoryError 和 IndexOutOfBoundsExceptio ...
- java中异常以及处理异常
一.异常简介 什么是异常? 异常就是有异于常态,和正常情况不一样,有错误出错.在java中,阻止当前方法或作用域的情况,称之为异常. java中异常的体系是怎么样的呢? 1.Java中的所有不正常类都 ...
- [转载]Java中异常的捕获顺序(多个catch)
http://blog.sina.com.cn/s/blog_6b022bc60101cdbv.html [转载]Java中异常的捕获顺序(多个catch) (2012-11-05 09:47:28) ...
随机推荐
- [题解](排列/逆序对)luogu_P1338末日的传说
首先我们要考虑怎么排能使逆序对数最多:显然是下降序列时,会产生n*(n-1)/2数量的逆序对 那么我们肯定是要尽量把序列的尾端安排成下降序列,前面的尽量不动,中间可能有一段排列自适应到m的逆序对数 然 ...
- Spring ThreadPoolTaskExecutor队列满的异常处理
<!-- 配置线程池 --> <bean id="threadPool" class="org.springframework.scheduling.c ...
- DozerBeanMapper 配置
applicationContext.xml <bean id="mapper" class="org.dozer.spring.DozerBeanMapperFa ...
- 解决tomcat闪退问题
https://blog.csdn.net/zh2nd/article/details/79068680 转载此博客链接内容,非常感谢博主 本文参考CSDN博主 哈克沃德.的<Tomcat8启动 ...
- 剑指Offer——数组中只出现一次的数字(一个很帅的异或解法)
题目: 一个整型数组里除了两个数字之外,其他的数字都出现了两次.请写程序找出这两个只出现一次的数字. 看题目脑子里就出现做法了: 遍历,用个HashMap来记录出现的次数,然后再遍历HashMap返回 ...
- CodeForces - 589B
题目链接:https://vjudge.net/contest/242578#problem/B Dasha decided to bake a big and tasty layer cake. I ...
- Apache禁止访问网站子目录的方法
在PHP网站开发中,基于WEB服务器和PHP网站程序代码的安全考虑,我们需要对相关的目录或者文件访问权限进行控制,以防止意外情况的发生,那么我们如何来实现这种功能呢?我们可以通过Apache来实现禁止 ...
- 介绍一个很好用的Rsa加解密的.Net库 Kalix.ApiCrypto
Rsa非对称加密技术 这个就不说了,大家上网搜索都知道,公钥加密,私钥解密.当然大家也可以自己实现.这里就懒了,就去找一个现成的库,Nuget上搜索,GitHub上搜索,发现.Net的加解密库,下载量 ...
- sql单列合并
有一组这样的数据 1 a 10 2 b 2 4 c 5 1 a 5 在应用中,我们可能需要把出现a的数据合并显示: 1 a 10,5 sqlite上实现: SELECT ...
- BZOJ2216: [Poi2011]Lightning Conductor(DP 决策单调性)
题意 题目链接 Sol 很nice的决策单调性题目 首先把给出的式子移项,我们要求的$P_i = max(a_j + \sqrt{|i - j|}) - a_i$. 按套路把绝对值拆掉,$p_i = ...