Java中异常体系
Java中的异常体系
Throwable,是一个类,表示可抛出的,它是所有的异常都继承的类。
Throwable的子类,又分为两种,一种是Error,另一种是Exception。
Error一般不是应用程序抛出的,而是Java虚拟机抛出的,应用不需要管。
Exception是应用程序抛出来的,又分为两种,一种是Checked Exception,另一种是Unchecked Exception,Unchecked Exception主要是Runtime Exception,就是运行时异常。
Checked的含义是检查,主要指的是Javac这个编译器的检查,Javac编译器检查出来的异常都叫Checked Exception(受检异常,这里的受检,主要的含义是受Javac这个编译器的检查),所以受检异常是编译器肯定会检查出来的,所以应用必须得要Catch这个异常,否则应用无法通过编译,因此,受检异常都是必须要处理的异常。
Unchecked Exception,就是除Checked Exception之外的Exception,主要是Runtime Exception,就是应用运行的过程中抛出来的异常,因为是运行过程中抛出来的,所以一定是Java虚拟机抛出来的,因为应用是Jvm去运行的嘛。那些都是运行时异常呢?比如,下面的这个异常ArithmeticException:
Exception in thread "main" java.lang.ArithmeticException: / by zero
at HelloWorld.main(HelloWorld.java:9)
再比如:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10
at HelloWorld.main(HelloWorld.java:13)
为什么这些异常是运行时异常呢?因为除0异常是除法操作中的除数为0的时候才会抛出来,而除法的语法要求两边只要都是数字类型就好了,至于是否除数是0在编译的时候无法检查到,只能在运行的时候发现。对于数组下标越界异常也是同样的道理,语法只要求数组下标必须是整型,无法知道这个整型数是0、整数、还是负数,所以只能通过运行来发现。
Java中异常体系的更多相关文章
- 《java中异常和错误》
异常和错误的区别. 异常: 在Java中程序的错误主要是语法错误和语义错误,一个程序在编译和运行时出现的错误我们统一称之为异常,它是VM(虚拟机)通知你的一种方式,通过这种方式,VM让你知道,你(开发 ...
- Java基础——异常体系
在Java中,异常对象都是派生于Throwable类的一个实例,Java的异常体系如下图所示: 所有的异常都是由Throwable继承而来,在下一层立即分解为两个分支,Error和Exception. ...
- java中异常介绍
一.异常概述 异常处理已经成为衡量一门语言是否成熟的标准之一,目前的主流编程语言如C++.C#.Ruby.Python等,大都提供了异常处理机制.增加了异常处理机制后的程序有更好的容错性,更加健壮. ...
- java中异常以及处理异常
一.异常简介 什么是异常? 异常就是有异于常态,和正常情况不一样,有错误出错.在java中,阻止当前方法或作用域的情况,称之为异常. java中异常的体系是怎么样的呢? 1.Java中的所有不正常类都 ...
- 浅谈java中异常抛出后代码是否会继续执行
问题 今天遇到一个问题,在下面的代码中,当抛出运行时异常后,后面的代码还会执行吗,是否需要在异常后面加上return语句呢? public void add(int index, E element) ...
- java中异常的抛出:throw throws
java中异常的抛出:throw throws Java中的异常抛出 语法: public class ExceptionTest{ public void 方法名(参数列表) throws 异常列表 ...
- Java中异常关键字throw和throws使用方式的理解
Java中应用程序在非正常的情况下停止运行主要包含两种方式: Error 和 Exception ,像我们熟知的 OutOfMemoryError 和 IndexOutOfBoundsExceptio ...
- [转载]Java中异常的捕获顺序(多个catch)
http://blog.sina.com.cn/s/blog_6b022bc60101cdbv.html [转载]Java中异常的捕获顺序(多个catch) (2012-11-05 09:47:28) ...
- java的异常体系 及强制转换
一,异常 1.常见的几种异常: StackOverFlow 栈溢出错误:写递归函数的时候,没有定义递归结束的条件. ArrayIndexOutofBounds 数组越界:如新new一个数组,in ...
随机推荐
- NET Core 2.2
.NET Core 2.2 新增部分功能使用尝鲜 https://www.cnblogs.com/viter/p/10070248.html 前言 美国当地时间12月4日,微软2019开发者大 ...
- {Reship}{Socket}C#简单应用
This article come frome here ======================================================================= ...
- istio 安装试用
1. 命令行工具 curl -L https://git.io/getIstio | sh - 2. 环境变量配置 export PATH=$PWD/bin:$PATH 3. RBAC 检验 kube ...
- [转]C#在WinForm下使用HttpWebRequest上传文件并显示进度
/// <summary> /// 将本地文件上传到指定的服务器(HttpWebRequest方法) /// </summary> /// <param name=&qu ...
- centos7下安装Anaconda3
下载anaconda3: wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-4.2.0-Linux-x86_64 ...
- laravel加载js和css等资源
4里面是composer下载以后,publish,blade模板里面有html标签 不过在5以后,html和form标签去掉了,publish方式似乎也变化了,没看懂…… 直接贴demo吧 mac:n ...
- Hibernate学习2—Hibernate4 CRUD体验初步
接着上一节,工程结构: jar包没有变化: 一.HibernateUtil 封装: com.cy.util.HibernateUtil.java: package com.cy.util; impor ...
- [转][c#]注册表经验集
在 win7 64位的系统中,为了将程序做成绿化版(单EXE文件),一些设置准备放到 regedit(注册表)中. 测试时发现网上的 demo 可以读,但写的值调试不报错,相应位置却不存在,困扰了许久 ...
- docker 学习(十) 容器常用命令
1 docker run -it ubuntu:15.10 /bin/bash 如果有ubuntu:15.10这个镜像,就run,否则会从dockerhub下载,并run. -it 一般连用,表示按 ...
- 【UVALive】2678 Subsequence(尺取法)
题目 传送门:QWQ 分析 一开始没看到都是正整数根本不会做...... 看到了就是水题了.(但还是sb WA了一发) 尺取法搞一搞 代码 #include <bits/stdc++.h> ...