Exception的异常分类与处理
一、 异常:
1:错误的分类
1)Error:错误(不可控),一般指的是系统方面的异常,比如 蓝屏,内存溢出,jvm运行环境出现了问题。
2) Exception:是可控的异常,程序员可以在编写程序时解决的错误。
3)两者的父类为Throwable;
2:可以控制的异常:
Exception:是所有异常的父类,其下面可以派生出很多子类型。
3:异常处理机制。
在编写程序时,某一块代码可能会某些异常。我们应该对这块
1) 进行异常处理。怎么处理呢?
如下语法:--解决方法
try{
捕捉代码片段出现的异常信息,然后封装成异常对象//可能出
现异常的代码块放入try{}中,
}catch(异常类型的声明--引用捕捉到的异常对象){
//处理异常
}finally{
/*不管try中是否出现异常,都会执行此部分代码。
一般都用来用做关闭,释放等操作。
try中出现return 也会执行finally中的语句
*/
}
2)进行处理过程: 我们将可能出现异常的代码块放入try{}中,
①jvm会进行检查try{}中的代码,
如果有异常,jvm就会将异常信息封装成相应的异常对象,
然后转移到catch(){}代码块中进行处理,执行{}中的业务逻辑。
最后会执行finally模块的代码。
②如果try{}中没有异常出现,最后也会执行finally模块 中的逻辑。
4:catch代码块:
①数量上:可以有1个或多个,
②执行顺序: 从上到下的catch块使用的异常类型可以是同级别的;
如果多个异常类型有父子关系时,那么应该先写子异常,再写父异常。
(先写父异常时,编译不通过)先处理子类型异常,再处理父类型异常。
5:finally代码块:
①finally代码块是有没有异常都会执行的,最后执行。
②通常用于关闭某些操作,删除临时文件等;
③不管try有没有异常当程序中有return关键字的时候, 先执行return,再执行finally代码块
6:throw : 抛出异常对象。
概念:有时候,程序中捕获的异常,不想在catch代码块中处理。
就要往外抛出,抛给调用者(谁调用这个方法谁就是调用者)
由调用者来处理(需要try/catch),main中的异常最好直接处理。
7:throws:
在定义方法时,必须声明要抛出的异常对象的类型
throws:就是声明通知调用要处理的异常类型 ,在定义方法处声明抛出的异常类型.
throw :抛出异常对象,抛给调用者(方法),让调用者处理.
如果throw是运行时异常,可以不用 throws
如果throw是编译时异常,必须使用 throws
throw new 一个异常对象:
throw new NullPointerException();
8:异常的分类 :
①检查性异常(编译时异常)
reg:IO异常
②非检查性异常(运行时异常)
reg:
NullPointerException//空指针异常
ArrayIndexOutOfBoundsException//数组索引越界异常
StringIndexOutOfBOundsException//字符串索引超出范围,越界
ClassCastException //类造型异常
NumberFormatException//数字异常
IllegalArgumentsException//非法参数异常
不要把ClassNotFoundException当成运行时异常
在throw运行时异常对象时,方法处不需要声明throws,因为编译器 会忽略运行时异常。
当throw编译时异常时,必须在方法处声明throws此对象的类型。
9:当父类中的方法声明异常时,子类重写方法时可以不声明,也可以声明;
父类中方法不声明异常,子类不能声明异常;
10:自定义异常。只需要继承Exception,用系统提供的构造器即可。
二、子类异常继承父类
子类重写父类方法时,如果父类的方法声明了异常:
1)子类方法可以不声明该异常;
2)可以按父类的方法进行声明;
3)也可以声明父类方法的异常的子类型异常;
*不能声明父类方法异常的父类型
例如:public double distance()throws Exception{
//代码块
}
4)父类的方法如果没有声明异常 , 子类方法不可以声明异常
Exception的异常分类与处理的更多相关文章
- Java异常分类 转载
Java异常分类 http://blog.csdn.net/woshixuye/article/details/8230407 一.基本概念 看java的异常结构图 Throwable是所有异 ...
- java之异常处理、异常分类、Throwable、自定义异常
参考http://how2j.cn/k/exception/exception-trycatch/336.html 异常处理 try catch 1.将可能抛出FileNotFoundExceptio ...
- Java自学-异常处理 异常分类
Java 中异常的分类 异常分类: 可查异常,运行时异常和错误3种 其中,运行时异常和错误又叫非可查异常 步骤 1 : 可查异常 可查异常: CheckedException 可查异常即必须进行处理的 ...
- Java中异常分类和Throw和Throws的区别
Java中异常分类和Throw和Throws的区别 1.异常分类 Throwable是Java中所有错误和异常的超类.它的下一级是Error和Exception 1.1 Error(错误) Error ...
- 异常概念&异常体系和异常分类
异常概念 异常:指的是程序在执行过程中,出现的非正常的情况,最终会导致JVM的非正常停止. 在Java等面向对象的编程语言中,异常本身是一个类,产生异常就是创建异常对象并抛出了一个异常对象.Java处 ...
- Java异常分类
一.基本概念 看java的异常结构图 Throwable是所有异常的根,java.lang.ThrowableError是错误,java.lang.ErrorException是异常,java.lan ...
- Java异常分类及处理
1.Throwable是所有异常的根(java.lang.Throwable)2.Error是错误(java.lang.Error) 当程序发生不可控的错误时,程序会报错,Error及其子类的对象不应 ...
- 【总结】Java异常分类
链接:https://www.nowcoder.com/questionTerminal/3ded1983c85c4ae197e005bd31777bc7来源:牛客网 Throwable是所有异常的根 ...
- [原创]如果软件在网络磁盘中或移动磁盘中运行时需要解决 exception C0000006 异常问题
//如果软件在网络磁盘中或移动磁盘中运行时需要利用下面这句命令来解决 exception C0000006 异常问题 {$SetPEFlags IMAGE_FILE_REMOVABLE_RUN_FRO ...
随机推荐
- Alpha冲刺(11/10)——2019.5.3
作业描述 课程 软件工程1916|W(福州大学) 团队名称 修!咻咻! 作业要求 项目Alpha冲刺(团队) 团队目标 切实可行的计算机协会维修预约平台 开发工具 Eclipse 团队信息 队员学号 ...
- JSON ------ 创建与访问
JSON (Java Script Object Notation, js对象表示法) 是存储和交换文本信息的语法,类似 XML JSON的文件类型是 “.json” 优点: 比XML ...
- 【LeetCode】缺失的第一个正数【原地HashMap】
给定一个未排序的整数数组,找出其中没有出现的最小的正整数. 示例 1: 输入: [1,2,0] 输出: 3 示例 2: 输入: [3,4,-1,1] 输出: 2 示例 3: 输入: [7,8,9,11 ...
- docker入门实例(转载)
1.Docker 是什么?Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux 或 Windows 机器上( 摘自百度 ) ...
- Docker-Compose通过文件声明默认的环境变量
写文目的 在写本文之前,我在做一个docker-compose项目,这里需要在docker-compose.yml配置中引用到宿主机的ip,然而docker-compose并没有命令行一个输入的选项, ...
- /etc/skel目录
/etc/skel目录 Linux中的/etc/skel目录(skel是skeleton的缩写,意为骨骼.框架.)是用来存放新用户配置文件的目录,当我们添加新用户时,这个目录下的所有文件会自动被复制到 ...
- dotnet core系列之Background tasks with hosted services (后台任务)
这篇简单讲asp.net core 中的后台任务 用到的包: Microsoft.AspNetCore.App metapackage 或者加入 Microsoft.Extensions.Hostin ...
- C#安装和卸载windowsService的bat指令
只需新建2个文本文档,将2个指令分别复制进去,再将txt格式改为bat格式,以管理员身份运行 安装指令 %SystemRoot%\Microsoft.NET\Framework\v4.0.30319\ ...
- 物联网学习笔记三:物联网网关协议比较:MQTT 和 Modbus
物联网学习笔记三:物联网网关协议比较:MQTT 和 Modbus 物联网 (IoT) 不只是新技术,还是与旧技术的集成,其关键在于通信.可用的通信方法各不相同,但是,各种不同的协议在将海量“事物”连接 ...
- 函数内this指向+排序+找出数组大小项+Math类
解决函数内this指向: 1,可以在函数外提前声明变量 _this/that = this 2,通过apply()和call()来修改函数内的this指向 二者区别: 用法是一样的,参数形式不一样 f ...