Java的异常机制
Java的异常机制
(一)异常的概念
异常是指程序在编译或运行时出现的导致程序不能继续编译或运行的状况。、
(二)Throwable类
Throwable类继承自Object类,是Java中所有错误或异常的超类,只有该类及其子类的对象才能通过throw语句抛出。Throwable类的子类有Error类和Exception类。
在异常机制中,编译时的异常直接继承自Exception类,而运行时异常继承自其子类RuntimeException类。
(三)异常的处理
异常的处理是通过try/catch语句进行捕获并处理。
①try语法:try{ [可能出现异常的代码] };
②catch语法:catch ( [预匹配的异常] ) { [处理代码] };
示例:
Scanner input = new Scanner(System.in);
try {
System.out.println("请输入被除数");
int n1 = input.nextInt();
System.out.println("请输入除数");
int n2 = input.nextInt();
System.out.println("结果为:"+n1/n2);
} catch (ArithmeticException e) {
System.out.println("分母不能为0");
System.out.println(e.getMessage());
e.printStackTrace();
}catch (InputMismatchException e) {
System.out.println("分子分母都应该是数字");
System.out.println(e.getMessage());
}catch (Exception e) {
System.out.println("出现了未知异常");
} //捕获多个异常分别处理
Scanner input = new Scanner(System.in);
try {
int n = input.nextInt();
} catch (InputMismatchException | ArithmeticException |ArrayIndexOutOfBoundsException e) {
e.printStackTrace();
}
//捕获多个异常合并处理
(注:在多重catch机制中,try模块发生异常时,异常机制按catch顺序逐个匹配异常,一旦匹配成功则不再继续匹配)
(四)finally关键字
无论方法在执行过程中是否发生异常,方法中的finally模块都会执行。
Scanner input = new Scanner(System.in);
try {
int n = input.nextInt();
} catch (InputMismatchException e) {
e.printStackTrace();
}
finally {
System.out.println("finally");
}
(注:finally必须与try或try/catch配合使用;在方法执行return语句前,未执行的finally模块将被强制执行)
(五)异常对象的常用方法
①printStackTrace():打印输出异常的堆栈信息;
②getMessage():返回异常信息描述字符串。
(六)常见的异常
|
异 常 |
描 述 |
|
Exception |
异常层次结构的父类 |
|
NullPointerException |
空指针异常 |
|
ClassNotFoundException |
类不存在 |
|
ClassCastException |
对象强制类型转换出错 |
|
ArithmeticException |
算术错误 |
|
ArrayIndexOutOfBoundsException |
数组下标越界 |
|
IllegalArgumentException |
方法参数异常 |
|
NumberFormatException |
数字格式转换异常 |
(七)throws关键字
throws关键字用于声明异常,将该方法出现的异常反馈给上层方法处理。
InterruptedException {
try {
test();
} catch (IOException e) {
e.printStackTrace();
}
}
static public void test() throws InterruptedException,IOException{
System.out.println("线程休眠开始");
Thread.sleep(2000);
System.out.println("线程休眠结束");
}
(注:main方法声明的异常由JVM处理)
(八)throw关键字
throw关键字用于抛出异常,使程序进入异常处理机制。
if (!("男".equals(gender) || "女".equals(gender))) {
Exception exp = new Exception("性别只能是男或女");
throw exp;
}
(九)自定义异常
自定义异常是通过继承异常的类而创建了该异常类的子类,主要用于精确地捕获指定异常。
public class AgeException extends Exception{
public AgeException() {
super();
}
public AgeException(String msg) {
super(msg);
}
}
———————————————————————————————————————————————————————————————————
The end @ 万有引力+
-
-
-
-
-
Java的异常机制的更多相关文章
- 关于java中异常机制
什么是异常:异常就是程序在运行时出现的不正常情况.对于严重的情况Java通过Error类进行描述,一般不用编写代码处理:对于不严重的情况Java通过Exception描述,一般编写针对性代码对其进行处 ...
- Java笔记 - 异常机制
JAVA异常机制是Java提供的用于处理程序在运行期可能出现的异常事件(如数组下标越界.文件不存在等)的一种机制,使程序不会因为 异常的发生 而 阻断或产生不可预见的结果 .而且还可以将逻辑代码与错误 ...
- Java之异常机制(1) - 高效处理异常
Java开发人员做出的有关架构的最重要的决定之一便是如何使用Java异常模型.Java异常处理成为社区中讨论最多的话题之一.一些人认为Java语 言中的已检查异常(Checked Exceptions ...
- Java基础——异常机制
[捕获异常] 硬件的错误.输入错误.物理限制等问题,都可能导致程序运行时的异常出现. 1.异常的分类层次 在java中,异常对象都是由Throwable类继承而来的,主要分为两大类: Error和Ex ...
- 异常小结:上一张图搞清楚Java的异常机制
下面是Java异常类的组织结构,红色区域的异常类表示是程序需要显示捕捉或者抛出的. Throwable Throwable是Java异常的顶级类,所有的异常都继承于这个类. Error,Excepti ...
- java:异常机制(try,catch,finally,throw,throws,自定义异常)
* String类中的格式化字符串的方法: * public static String format(String format, Object... args):使用指定的格式字符串和参数返回一个 ...
- Java异常机制
Java异常分类 异常表明程序运行发生了意外,导致正常流程发生错误,例如数学上的除0,打开一个文件但此文件实际不存在,用户输入非法的参数等.在C语言中我们处理这类事件一般是将其与代码正常的流程放在一起 ...
- Java学习 · 初识 异常机制
异常机制 1. 程序中的异常 a) b) 面对异常如何解决 i. 由开发者通过if-else来解决 代码臃肿 程序员需要花费很大精力 ii. ...
- [Java学习笔记] Java异常机制(也许是全网最独特视角)
Java 异常机制(也许是全网最独特视角) 一.Java中的"异常"指什么 什么是异常 一句话简单理解:异常是程序运行中的一些异常或者错误. (纯字面意思) Error类 和 Ex ...
随机推荐
- maven插件--assembly
之前maven项目中使用assembly插件单独打包项目依赖包,项目只有一个模块也就一个pom,配置这个插件,一切很顺利.但是现在的项目复杂了,有parent有child,多模块.按照之前的做法怎么也 ...
- T-SQL语言基础(1)之理论背景
从学校就开始接触和使用 SQL 了,但一直没有怎么细细去了解它,最近入职的公司比较重 T-SQL 部分,所以就准备系统的学习一下. 买了一本<Microsoft SQL Server 2008 ...
- PHP防CC攻击代码
PHP防CC攻击代码: empty($_SERVER['HTTP_VIA']) or exit('Access Denied'); //代理IP直接退出 session_start(); $secon ...
- python3.6安装docx模块
1.下载 python_docx-0.8.6-py2.py3-none-any.whl 地址: http://www.lfd.uci.edu/~gohlke/pythonlibs/2.在这个网页的最下 ...
- U盘安装Windows原版系统(安装方式有很多,我讲我的安装方式)
我陈某人,也是安装过至少200部台式或笔记本的人物. 低调,低调,开个玩笑~ 安装方式有很多,我讲我的安装方式,欢迎收藏. 1.下载准备文件下载.iso原版系统镜像文件http://msdn.itel ...
- python装饰器扩展之functools.wraps
我们知道函数被装饰器,装饰后,所有的属性,以及内置函数就失效了. 原因是函数类型变成了warpper类型 示例1:不带wraps装饰器示例 def warfunc(func): def warpper ...
- OI养老专题03:让坏人出列的约瑟夫问题
问题是这样的:一共有2n个人,其中有n个好人,n个坏人.好人的编号是1~n,坏人的编号是n+1~2n.要求你求出最小的m(报数到m的人出局),让前n个出局的人都是坏人. 似乎除了暴力,我们想不出其它的 ...
- 扫黑除恶Team second
团队介绍: 团队序号:② 团队名称:扫黑除恶 团队项目:飞机大战游戏 团队码云地址:https://gitee.com/MrLiu199903/seflash/branches 撰写人:刘新飞 学号: ...
- 对int类型的数据,如何让获取长度
下面为大家写一个列子 int a = 124;<br> Integer a1 = a;//转换为包装类Integer<br> System.out.println(a1.t ...
- 1.1大数据平台架构及Hadoop生态圈
1.硬件架构实例 2.软件架构实例 3.数据流通用概念模型 a.数据源(互联网.物联网.企业数据):App.Device.Site b.数据收集(ETL.提取.转换.加载):Flume.Kafka.S ...