@

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)的更多相关文章

  1. java基础学习总结——异常处理

    一.异常的概念 异常指的是运行期出现的错误,也就是当程序开始执行以后执行期出现的错误.出现错误时观察错误的名字和行号最为重要.

  2. Java基础学习(七) - 异常处理

    1.异常概念 异常指的是程序在执行过程中出现的非正常的情况,导致JVM的非正常停止.在Java中,异常是一个类,产生异常就是创建异常对象并抛出一个异常对象. 异常指的并不是语法错误,语法错误,编译不会 ...

  3. 转载-java基础学习汇总

    共2页: 1 2 下一页  Java制作证书的工具keytool用法总结 孤傲苍狼 2014-06-24 11:03 阅读:25751 评论:3     Java基础学习总结——Java对象的序列化和 ...

  4. Java基础学习笔记总结

    Java基础学习笔记一 Java介绍 Java基础学习笔记二 Java基础语法之变量.数据类型 Java基础学习笔记三 Java基础语法之流程控制语句.循环 Java基础学习笔记四 Java基础语法之 ...

  5. 尚学堂JAVA基础学习笔记

    目录 尚学堂JAVA基础学习笔记 写在前面 第1章 JAVA入门 第2章 数据类型和运算符 第3章 控制语句 第4章 Java面向对象基础 1. 面向对象基础 2. 面向对象的内存分析 3. 构造方法 ...

  6. Java基础学习-- 继承 的简单总结

    代码参考:Java基础学习小记--多态 为什么要引入继承? 还是做一个媒体库,里面可以放CD,可以放DVD.如果把CD和DVD做成两个没有联系的类的话,那么在管理这个媒体库的时候,要单独做一个添加CD ...

  7. Java基础学习中一些词语和语句的使用

    在Java基础学习中,我们刚接触Java会遇到一些词和语句的使用不清的情况,不能很清楚的理解它的运行效果会是怎么样的,如:break,continue在程序中运行效果及跳转位置, 1.先来看看brea ...

  8. java基础学习总结——开篇

    java是我学习的第一门编程语言,当初学习java基础的时候下了不少功夫,趁着这段时间找工作之际,好好整理一下以前学习java基础时记录的笔记,当作是对java基础学习的一个总结吧,将每一个java的 ...

  9. Java基础学习笔记(一)

    Java基础学习笔记(一) Hello World 基础代码学习 代码编写基础结构 class :类,一个类即一个java代码,形成一个class文件,写于每个代码的前端(注意无大写字母) XxxYy ...

随机推荐

  1. 在Windows进下build 高可用负载均衡与反向代理神器:HAProxy

    前言 HAProxy是一个款基于Linux的开源高可用的负载均衡与反向代理工具,与Nginx大同小异. 搜遍了全网,几乎都是基于Linux平台.Windows平台的要么就是多年前的旧版本,要么就是不兼 ...

  2. js匀速运动框架案例

    点击"开始运动"按钮,红色的#red区块开始向右匀速运动,抵达到黑色竖线位置自动停止,再次点击"开始运动"#red区块也不会再运动.同时为了便于后期维护,要求运 ...

  3. [MIT6.006] 13. Breadth-First Search (BFS) 广度优先搜索

    一.图 在正式进入广度优先搜索的学习前,先了解下图: 图分为有向图和无向图,由点vertices和边edges构成.图有很多应用,例如:网页爬取,社交网络,网络传播,垃圾回收,模型检查,数学推断检查和 ...

  4. 一看就懂的MySQL的FreeList机制

    Hi,大家好!我是白日梦! 今天我要跟你分享的MySQL话题是:"了解InnoDB的FreeList吗?谈谈看!" 本文是MySQL专题的第 7 篇,共110篇. 一.回顾 前面几 ...

  5. POSIX条件变量

    条件变量: 当一个线程互斥的访问某个变量时,它可能发现其他线程改变状态之前,它什么都做不了例如:一个线程访问队列时,发现队列为空,它只能等待,直到其他线程将一个节点添加到队列中,这种情况就需要使用条件 ...

  6. 思维导图iMindMap可以在哪些领域应用

    生活工作中你常常会遇到许多力所不能及的事情,感到无奈.茫然,这时候你急需一个帮手来帮你打破困境,思维导图就是这样的救世主,至于它有哪些力所能及的事情就是下面小编要跟你讲的. 你是否经常遇到过这样的情况 ...

  7. Camtasia制作视频分割与视频拼接

    视频的分割与拼接是在制作和编辑视频中经常用到的方法,运用Camtasia视频编辑器能够让视频制作更加的简单和便捷.Camtasia是一款录频软件和视频编辑器,可以进行屏幕录制.拖放视频等操作.小编采用 ...

  8. 用Camtasia来快速地给视频添加水印

    在日常生活中,视频的流行度越来越高,各种短视频的软件蜂拥上市,所以越来越多的人走上了自媒体的道路,在这条路上,谁的视频更加的精致,谁才能获得更多的关注度,相应的也能增加自己的人气. 但是在制作视频的过 ...

  9. PowerPoint无法正常加载MathType的解决方法

    MathType是一款十分便捷的数学公式编辑器,可以和很多办公软件和网站兼容使用,我们日常用的比较多的也就是Office和WPS,更具体的说是Word\Excel\PPT等等一系列办公常用软件. 不过 ...

  10. 【PUPPETEER】初探之原生frame切换(四)

    一.知识点 page.frames() 使用frame.url() 获取framed的url x.getAttribute('x') 获取元素内值 二.实例 问:什么是iframe? 答:iframe ...