@

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. K-近邻算法kNN

    K-近邻算法(k-Nearest Neighbor,简称kNN)采用测量不同特征值之间的距离方法进行分类,是一种常用的监督学习方法,其工作机制很简单:给定测试样本,基于某种距离亮度找出训练集中与其靠近 ...

  2. gcc入门(上)

    gcc:GNU Compiler Collection的缩写.最初是作为C语言的编译器,现在已支持多种语言.Gcc支持多种硬件平台.gcc是一个可移植跨平台编译器gcc还能跨平台交叉编译器.gcc有多 ...

  3. makefile 函数

    1. findstring $(findstring <find>, <in>) 从 in 中查找 find ,如果找到则返回find,否则返回空 str1=1111 str2 ...

  4. linux全局和个人配置文件说明

    1.bash配置文件: 1).全局(bash的配置文件) 有 /etc/profile   /etc/profile.d/*  与 /etc/bashrc 其实都是bash这个程序启动的时候会读取配置 ...

  5. C#高级编程之特性

    特性定义 MSDN的描述:使用特性,可以有效地将元数据或声明性信息与代码(程序集.类型.方法.属性等)相关联. 将特性与程序实体相关联后,可以在运行时使用反射这项技术查询特性. 参考此处作者的解释 h ...

  6. 【剑指offer】面试题68(补充) 0到n-1中缺失的数字(二分法的进一步应用)

    题目 一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0到n-1之内. 在范围0到n-1的n个数字中有且只有一个数字不在该数组中,请找出这个数字. 输出 输入:[0,1,2, ...

  7. 好学易懂 从零开始的插头DP(一)

    好学易懂 从零开始的插头DP(一) 写在前面 这是一篇,以蒟蒻视角展开的梳理总结.更改了一些顺序,变化了一些细节.方便蒟蒻学习理解(起码本蒟蒻是这样).大佬们可以直接看其它大佬的博客,可以学的更快. ...

  8. 重闯Sqli-labs关卡第一天(1-4关)

    前言 之前暑假闯了很多关但是最近刷BUGku的题 遇到SQL注入题就凉... 垃圾的我只能继续硬着头皮重新再来学习,再来闯. 第一关:字符型注入 字符型注入就是注入点的数据类型是字符型.字符型注入与数 ...

  9. kali 系列学习06 - 攻击之密码破解

    参考书 <kali linux渗透测试技术详解> 清华大学出版社  2015 杨波 一.medusa使用 原理:并行登陆破解 1.只输入单个命令,是查看帮助 root@kali:/tool ...

  10. 思维导图软件iMindMap制作技巧有哪些

    iMindMap11是iMindMap全新的版本.它可以提供给我们更好的灵活性以便我们将我们的思维进行可视化,并进一步的呈现和开发出属于自己的想法以及思维方式.在iMindMap中我们可以利用思维导图 ...