java 异常处理 简书_Java基础知识8-异常处理
配图
异常概述
异常是运行是在代码序列中引起的非正常情况.换句话说,异常是运行时错误.
Java异常是用来描述在一段代码中发生的异常情况(也就是错误)的对象.当出现引起异常的情况时,就会创建用来表示异常的对象,并在引起错误的方法中抛出异常对象.
方法可以选择自己处理异常,也可以继续传递异常.
异常类型
所有异常类型都是内置类Throwable的子类.Throwable位于异常类层次中的顶部.紧随Throwable之下的两个子类,它们将异常分为两个不同的分支.
一个分支是Exception类,这个类既可以用于用户程序应当捕获的异常情况,也可以用于创建自定义异常类型的子类.Exception有一个重要的子类,名为RuntimeException.
另一个分支是Error类,该类定义了在常规环境下不希望有程序捕获的异常.Error类型的异常有Java运行时系统使用,指运行环境本身出现了某些错误.
未捕获的异常
int d = 0;
int a = 42 / d;
上述语句执行时,系统检测到试图除以零时,它会构造一个新的异常对象,然后抛出异常java.lang.ArithmeticException: / by zero如果没有即时捕获处理,程序会立即终止运行.
捕获异常
使用try和catch来捕获异常.
try {
int d = 0;
int a = 42 / d;
} catch (Exception e){
System.out.println("程序出现了异常");
}
这个时候你就会发现,程序并没有终止运行,而是执行了catch代码中的代码.
自己处理异常有两个优点:
1.允许修复错误.
2.阻止程序自动终止.
多条catch字句
try {
int d = 0;
int a = 42 / d;
} catch (Exception e){
System.out.println("Exception");
} catch (ArithmeticException ae){
System.out.println("ArithmeticException");
}
上面我只是举了一个例子,如果程序先捕获了第一个catch的异常,那么程序不回再去捕获第二个catch的异常,以此类推.
我这是在举例子,因为Exception是所有异常的父类所以绝对不可能后捕获ArithmeticException异常的.
手动抛出异常
使用throw关键字.
try {
throw new ArithmeticException();
} catch (ArithmeticException ae){
System.out.println("ArithmeticException");
}
上述代码中我们手动抛出了ArithmeticException异常,而Java中所有异常都是对象.所以我们要创建ArithmeticException对象并抛出.
引发异常但不处理
使用throws关键字
public void testMethod() throws ArithmeticException {
}
上述代码我们的这个方法执行的时候发生了异常,但是我们不做处理,并且将异常向上抛(抛给调用此方法的方法).
如果我们的方法中使用了自定义异常类,那么我们也需要向上抛出.
自定义异常类
class TestExcption extends Exception{
public TestExcption(){}
public TestExcption(String info){
super(info);
}
}
throw和throws的区别
1.throws使用在函数上.
throw使用在函数内.
2.throws抛出的是异常类,可以抛出多个,用逗号隔开.
throw抛出的是异常对象.
finally
使用finally可以创建一个代码块,改代码块会在执行try/catch代码块之后,并在执行try/catch代码块后面的代码之前执行.也就是说 不管是否有异常抛出,都会执行finally代码块.
try{
} catch (Exception e) {
} finally {
}
java 异常处理 简书_Java基础知识8-异常处理相关推荐
- java的技术定义_java基础知识——Java的定义,特点和技术平台
(作者声明:对于Java编程语言,很多人只知道怎么用,却对其了解甚少.我也是其中一员.所以菜鸟的我,去查询了教科书以及大神的总结,主要参考了<Java核心技术>这本神作.现在分享给大家!) ...
- java入门第六天课程_Java基础知识——第六天
原标题:Java基础知识--第六天 在前面的第四天,已经简单的介绍下了Java中类的结构,今天就深入的说下类的深层结构. 在Java中,可以在同一个类中定义两个或多个共享相同名称的方法,只要它们的参数 ...
- java逻辑符号怎么打_Java基础知识之运算符和输入输出
知识是珍宝,但实践是得到它的钥匙.--托马斯·富勒 Java基础知识之运算符和输入输出 一.运算符1.算术运算符:包括:+,-,*,/(整数运算取整),%(取余),++(递增1),–等 2.赋值运算符 ...
- java 新手入门电子书_java基础知识(适合新手入门).pdf
Java 基础知识 本文中主要分为三个部分,第一个部分介绍java 的基本概念,第二部分介绍了java 的 基础知识,第三部分讲解了java 的语法以及实现代码,适合java 初学者学习. 一 Jav ...
- java 注解入门 简书_Java基础-注解
注解是什么? Java注解(Annotation)又称为Java标注.可以从字面的意思理解它,其实就是一个标注.他可以根据定义作用于不同的地方.注解对他们注解的代码没有直接影响.注解是JDK 5中引入 ...
- java package报错_Java基础知识总结 - 超详细篇(上)
1,JDK:Java Development Kit,java的开发和运行环境,java的开发工具和jre. 2,JRE:Java Runtime Environment,java程序的运行环境,ja ...
- json java对象 简书_Java 对象的 Json 化与反 Json 化
最近在家里修习 Java 这项技能,估计快点满技能点儿了,很开心.不过遇到了一个问题,困扰了我一阵子.问题是这样的,我要写 Android App,与服务器交互.大家都知道 Javascript 不知 ...
- java type 简书_Java中的Type详解
ParameterizedType 参数化类型的使用 package com.keytop.att; /** * 实体类 * Created by fengwenhua on 2017/4/25. * ...
- java long 除法运算_java基础知识学习文档二
一.基本概念 1 对象: 对象是Java类的一个实例,它有状态.属性.行为.如:一个人,具体的某一个人是人类的一个实例.这个人他有名字.性别.年龄等属性,他可以吃饭.说话.走路等行为. 2 类: 类是 ...
最新文章
- centos7 tomcat 设置开机启动
- 团队-科学计算器-成员简介及分工
- Py之cython:python库之cython的简介、安装、使用方法之详细攻略
- 一旦有辞职念头就干不长了吗_年轻人辞职需不需要冷静期?辞职需要冷静,不需要企业给出冷静期...
- Kubernetes 核心概念 1
- 判断字符串是否是空格
- 脱离标准文档流(1)---浮动
- 自动劫持root密码
- Python 安装 lxml 插件
- C++--第7课 - 面向对象基本概念
- NOIp2017 题解
- 虚拟机 无法 ftp服务器系统,访问不到虚拟机上的ftp服务器上
- [随笔]_ELVE_git命令复习
- python爬取链家网_Python爬链家网租房信息
- python文件定位函数_python 文件和路径操作函数小结
- stm32外设笔记-freertos配置(四)
- 系统弱密码检查John
- qq登录,手机号验证,邮箱注册
- python getopt argparse_sys.argvgetopt-argparse
- R4S 玩转docker(一)
热门文章
- 内部代码显示苹果iOS 15.5 Beta新增支持外部链接支付
- 比亚迪赵长江:腾势今年将发布两款 SUV、一款 MPV
- Redmi K50 Pro核心配置曝光:搭载天玑9000旗舰4nm芯片
- 微信圈子将于12月28日停止运营,网友:不是微信朋友圈?
- 富士康有麻烦了,iPhone产能已被削减
- 黑鲨4游戏手机开启预热:4>5+6+7 比竞品更胜一筹
- 华谊兄弟:实际控制人王忠军、王忠磊合计减持1.44%公司股份
- 中芯国际人事变动:蒋尚义回归 传梁孟松要走
- 4999元起!华为Mate 40今日开启预售:搭载麒麟9000E
- 苹果:iPhone 12定价很合适,首批预订秒光说明用户认可