@

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.捕获异常

语法:

  1. try {
  2. //可能会发生异常的代码
  3. } catch (Exception e) {
  4. //异常处理
  5. } finally {
  6. //finally子块
  7. }

catch中的Exception为异常类型,多个catch子块可以捕捉多个异常类型。finally子块无论如何都会执行。

例如:

  1. public class TestException {
  2. public static void main(String[] args) {
  3. try {
  4. int i = 1/0;
  5. } catch (Exception e) {
  6. e.printStackTrace();
  7. } finally {
  8. System.out.println("finally");
  9. }
  10. }
  11. }

执行结果:

2.2.抛出异常

使用关键字throws将异常抛出给运行时系统,由运行时系统处理异常。

例如:

  1. public class TestException {
  2. public static void main(String[] args) {
  3. try {
  4. test();
  5. } catch (Exception e) {
  6. e.printStackTrace();
  7. }
  8. }
  9. public static void test() throws Exception{
  10. int i = 1/0;
  11. }
  12. }

执行结果:

3.自定义异常

之前有区分异常:

  • 检查性异常:继承Exception类
  • 运行时异常:继承RuntimeException类

3.1.自定义检查性异常

例如:网站注册,用户如果年龄低于18报出异常

  1. public class MyException extends Exception {
  2. public MyException() {
  3. super();
  4. }
  5. public MyException(String msg) {
  6. super(msg);
  7. }
  8. public static void main(String[] args) {
  9. int age;
  10. Scanner scanner = new Scanner(System.in);
  11. System.out.println("请输入你的年龄:");
  12. try {
  13. age = scanner.nextInt();
  14. if (age < 18) {
  15. throw new MyException("你未成年不能注册");
  16. }
  17. } catch (MyException e) {
  18. System.out.println(e.getMessage());
  19. }
  20. }
  21. }

执行结果:

3.2.自定义运行时异常

例子和上面一样,修改一些内容:

  1. public class MyException extends RuntimeException {
  2. public MyException() {
  3. super();
  4. }
  5. public MyException(String msg) {
  6. super(msg);
  7. }
  8. public static void main(String[] args) {
  9. int age;
  10. Scanner scanner = new Scanner(System.in);
  11. System.out.println("请输入你的年龄:");
  12. age = scanner.nextInt();
  13. if (age < 18) {
  14. throw new MyException("你未成年不能注册");
  15. }
  16. }
  17. }

执行结果:

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. php执行exec、xsell_exec命令失败

    在php.ini下进行更改 查找disable_function 去掉exec xsell_exec 重启php

  2. 经典c程序100例==91--100

    [程序91] 题目:时间函数举例1 1.程序分析: 2.程序源代码: #include "stdio.h" #include "time.h" void mai ...

  3. Java 内功修炼 之 数据结构与算法(二)

    一.二叉树补充.多叉树 1.二叉树(非递归实现遍历) (1)前提 前面一篇介绍了 二叉树.顺序二叉树.线索二叉树.哈夫曼树等树结构. 可参考:https://www.cnblogs.com/l-y-h ...

  4. tcp 客户端 发送syn

    简介 sys_connect->inet_stream_connect->inet_stream_connect->tcp_v4_connect->tcp_connect对于t ...

  5. redis重点ppt

  6. 在线动态修改ulimit

    前言 系统中有些地方会进行资源的限制,其中的一个就是open file的限制,操作系统默认限制的是1024,这个值可以通过各种方式修改,本篇主要讲的是如何在线修改,生产上是不可能随便重启进程的 实践 ...

  7. Idea eclipse 快捷键Debug调试

    运行下一行             F6 进入下一次计算      F5 运行到下一个断电  F7 恢复运行                F8

  8. Linux内核剖析——操作系统的启动

    一.总体功能 1.从通电到BIOS跳转 1.1 CPU在通电后,先进入实模式,设置CS=0XFFFF,IP = 0X0000(指向BIOS) 1.2 BIOS进行执行系统监测,并且在地址=0处初始化中 ...

  9. 又陷入知识盲区了,面试被问SpringBoot集成dubbo,我当时就懵了

    前言 前两天在和粉丝聊天的时候,粉丝跟我说之前在面试的时候被问到SpringBoot这一块的知识被问的有点懵,和我问了不少这方面的东西.事后我想了想不如把这些东西分享出来吧,让更多的人看到,这样不管是 ...

  10. css3系列之伪元素选择器

    Pseudo-Element Selectors(伪元素选择器) E::placeholder E::selection E::placeholder 这个选择器是选啥的呢, 是选 input 里面的 ...