@

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. 运维告警排班太复杂?试试Cloud Alert智能告警排班

    前言: 之前的几篇文章有说过,通过智能告警平台Cloud Alert,将指定条件的告警以多样化的通知方式,通知到指定的人,其中的通知的方式包含电话.短信.邮件.微信.APP.钉钉等. 本篇文章就来说下 ...

  2. lua调用dll demo

    使用的是lua5.3 DllMain.cpp 1 //生成的dll 是 lua_add53.dll 2 //luaopen_lua_add 3 extern "C" { 4 #in ...

  3. Markdown语法+Typora快捷键

    1. Markdown语法 1.1 代码块生成 // 对于代码块,使用"```+编程语言"即可生成书写对应代码块的区域 // JS代码块 ​```javascript // Jav ...

  4. 重写ceph-lazy

    前言 这个工具最开始是从sebastien的blog里面看到的,这个是 Gregory Charot(工具的作者)写的,通常我们在获取一个ceph的信息的时候,需要敲一连串的命令去获得自己需要的信息, ...

  5. backfill和recovery的最优值

    ceph在增加osd的时候会触发backfill,让数据得到平均,触发数据的迁移 ceph在移除osd的时候需要在节点上进行数据的恢复,也有数据的迁移和生成 只要是集群里面有数据的变动就会有网卡流量, ...

  6. 【转】CentOS7 64位安装mysql教程

    从最新版本的linux系统开始,默认的是 Mariadb而不是mysql!这里依旧以mysql为例进行展示 1.先检查系统是否装有mysql rpm -qa | grep mysql 这里返回空值,说 ...

  7. 网络协议_7层_TCP/IP

  8. 通过shodan搜索相同favicon.ico的网站

    0x01 根据favicon.ico生成hash python2,想改python3折腾了半天不得 import mmh3 import requests response = requests.ge ...

  9. powershell过杀软工具-xencrypt

           在红队攻击中,绕杀软是一个比较常见的技术.对于绕过杀软的方法,有基于黑白名单的,有基于shellloader的,也有基于加密与混淆的.最近在发现了这样一款过杀软的工具,推荐给有缘人,嘻嘻 ...

  10. 图解HTTP简单笔记【上】

    第一章 了解WEB及网络基础(省略了TCP/IP的知识点) 1.1.使用HTTP协议访问web  当我们在主机的浏览器的地址输入URL之后 请求将回发送至目标服务器 目标服务器在接受到响应请求时将会响 ...