Java基础学习之异常处理(6)
@
1.异常是什么
异常就是程序运行中可能会出现的错误,例如文件找不到,网络超时等。
异常Exception的父类时Throwable,Throwable实现了Serializable可序列化,有两个子类:Error和Exception。
1.1.Error
Error错误不是异常,是JVM本身的错误,无法通过代码处理。
后续的JVM相关文章中会说到,以及一些常见的Error和他们出现的情况,这里不赘述了。
1.2.Exception
Exception即异常,程序运行时发生,可通过Java的异常处理机制处理。
Exception又分为检查性异常和运行时异常。
检查性异常:强制需要程序员进行处理的异常,例如IOException类。
运行时异常又称非检查性异常,例如RuntimeException类。
2.异常处理机制
Java中异常的处理过程一般是捕获异常再处理。
2.1.捕获异常
语法:
try {
//可能会发生异常的代码
} catch (Exception e) {
//异常处理
} finally {
//finally子块
}
catch中的Exception为异常类型,多个catch子块可以捕捉多个异常类型。finally子块无论如何都会执行。
例如:
public class TestException {
public static void main(String[] args) {
try {
int i = 1/0;
} catch (Exception e) {
e.printStackTrace();
} finally {
System.out.println("finally");
}
}
}
执行结果:
2.2.抛出异常
使用关键字throws将异常抛出给运行时系统,由运行时系统处理异常。
例如:
public class TestException {
public static void main(String[] args) {
try {
test();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void test() throws Exception{
int i = 1/0;
}
}
执行结果:
3.自定义异常
之前有区分异常:
- 检查性异常:继承Exception类
- 运行时异常:继承RuntimeException类
3.1.自定义检查性异常
例如:网站注册,用户如果年龄低于18报出异常
public class MyException extends Exception {
public MyException() {
super();
}
public MyException(String msg) {
super(msg);
}
public static void main(String[] args) {
int age;
Scanner scanner = new Scanner(System.in);
System.out.println("请输入你的年龄:");
try {
age = scanner.nextInt();
if (age < 18) {
throw new MyException("你未成年不能注册");
}
} catch (MyException e) {
System.out.println(e.getMessage());
}
}
}
执行结果:
3.2.自定义运行时异常
例子和上面一样,修改一些内容:
public class MyException extends RuntimeException {
public MyException() {
super();
}
public MyException(String msg) {
super(msg);
}
public static void main(String[] args) {
int age;
Scanner scanner = new Scanner(System.in);
System.out.println("请输入你的年龄:");
age = scanner.nextInt();
if (age < 18) {
throw new MyException("你未成年不能注册");
}
}
}
执行结果:
Java基础学习之异常处理(6)的更多相关文章
- java基础学习总结——异常处理
一.异常的概念 异常指的是运行期出现的错误,也就是当程序开始执行以后执行期出现的错误.出现错误时观察错误的名字和行号最为重要.
- Java基础学习(七) - 异常处理
1.异常概念 异常指的是程序在执行过程中出现的非正常的情况,导致JVM的非正常停止.在Java中,异常是一个类,产生异常就是创建异常对象并抛出一个异常对象. 异常指的并不是语法错误,语法错误,编译不会 ...
- 转载-java基础学习汇总
共2页: 1 2 下一页 Java制作证书的工具keytool用法总结 孤傲苍狼 2014-06-24 11:03 阅读:25751 评论:3 Java基础学习总结——Java对象的序列化和 ...
- Java基础学习笔记总结
Java基础学习笔记一 Java介绍 Java基础学习笔记二 Java基础语法之变量.数据类型 Java基础学习笔记三 Java基础语法之流程控制语句.循环 Java基础学习笔记四 Java基础语法之 ...
- 尚学堂JAVA基础学习笔记
目录 尚学堂JAVA基础学习笔记 写在前面 第1章 JAVA入门 第2章 数据类型和运算符 第3章 控制语句 第4章 Java面向对象基础 1. 面向对象基础 2. 面向对象的内存分析 3. 构造方法 ...
- Java基础学习-- 继承 的简单总结
代码参考:Java基础学习小记--多态 为什么要引入继承? 还是做一个媒体库,里面可以放CD,可以放DVD.如果把CD和DVD做成两个没有联系的类的话,那么在管理这个媒体库的时候,要单独做一个添加CD ...
- Java基础学习中一些词语和语句的使用
在Java基础学习中,我们刚接触Java会遇到一些词和语句的使用不清的情况,不能很清楚的理解它的运行效果会是怎么样的,如:break,continue在程序中运行效果及跳转位置, 1.先来看看brea ...
- java基础学习总结——开篇
java是我学习的第一门编程语言,当初学习java基础的时候下了不少功夫,趁着这段时间找工作之际,好好整理一下以前学习java基础时记录的笔记,当作是对java基础学习的一个总结吧,将每一个java的 ...
- Java基础学习笔记(一)
Java基础学习笔记(一) Hello World 基础代码学习 代码编写基础结构 class :类,一个类即一个java代码,形成一个class文件,写于每个代码的前端(注意无大写字母) XxxYy ...
随机推荐
- 运维告警排班太复杂?试试Cloud Alert智能告警排班
前言: 之前的几篇文章有说过,通过智能告警平台Cloud Alert,将指定条件的告警以多样化的通知方式,通知到指定的人,其中的通知的方式包含电话.短信.邮件.微信.APP.钉钉等. 本篇文章就来说下 ...
- lua调用dll demo
使用的是lua5.3 DllMain.cpp 1 //生成的dll 是 lua_add53.dll 2 //luaopen_lua_add 3 extern "C" { 4 #in ...
- Markdown语法+Typora快捷键
1. Markdown语法 1.1 代码块生成 // 对于代码块,使用"```+编程语言"即可生成书写对应代码块的区域 // JS代码块 ```javascript // Jav ...
- 重写ceph-lazy
前言 这个工具最开始是从sebastien的blog里面看到的,这个是 Gregory Charot(工具的作者)写的,通常我们在获取一个ceph的信息的时候,需要敲一连串的命令去获得自己需要的信息, ...
- backfill和recovery的最优值
ceph在增加osd的时候会触发backfill,让数据得到平均,触发数据的迁移 ceph在移除osd的时候需要在节点上进行数据的恢复,也有数据的迁移和生成 只要是集群里面有数据的变动就会有网卡流量, ...
- 【转】CentOS7 64位安装mysql教程
从最新版本的linux系统开始,默认的是 Mariadb而不是mysql!这里依旧以mysql为例进行展示 1.先检查系统是否装有mysql rpm -qa | grep mysql 这里返回空值,说 ...
- 网络协议_7层_TCP/IP
- 通过shodan搜索相同favicon.ico的网站
0x01 根据favicon.ico生成hash python2,想改python3折腾了半天不得 import mmh3 import requests response = requests.ge ...
- powershell过杀软工具-xencrypt
在红队攻击中,绕杀软是一个比较常见的技术.对于绕过杀软的方法,有基于黑白名单的,有基于shellloader的,也有基于加密与混淆的.最近在发现了这样一款过杀软的工具,推荐给有缘人,嘻嘻 ...
- 图解HTTP简单笔记【上】
第一章 了解WEB及网络基础(省略了TCP/IP的知识点) 1.1.使用HTTP协议访问web 当我们在主机的浏览器的地址输入URL之后 请求将回发送至目标服务器 目标服务器在接受到响应请求时将会响 ...