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 ...
随机推荐
- ASP.NET Core 中的SEO优化(4):自定义视图路径及主题切换
系列回顾 <ASP.NET Core 中的SEO优化(1):中间件实现服务端静态化缓存> <ASP.NET Core 中的SEO优化(2):中间件中渲染Razor视图> < ...
- Python学习-赋值、浅copy和深copy
Python Copy: 在Python语言中,分为浅拷贝和深拷贝两种形式,也就是官方文档中的Shadow copy和Deep copy.在对简单的对象(object)进行复制时,两者没有区别,如下面 ...
- 分享Win7 将svn增加系统服务并成功启动的方法
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/default7/article/details/32728717 依照网上搜索到的方法,结果一直提示 ...
- 我的 SONY MP3 NWZ-B105F
我的 SONY MP3 NWZ-B105F 只有 2GB 的容量,好像2007年出来的,现在还可以开机和播放. 使用的 SigmaTel 的方案 BGA 的封装,1.1inch 屏幕竟然是彩屏,锂电池 ...
- 1072. Gas Station (30) 多源最短路
A gas station has to be built at such a location that the minimum distance between the station and a ...
- 论BOM管理的若干重要问题
在制造业信息化建设过程中,BOM管理的意义已经被广泛认同与重视.BOM管理是企业产品数据管理领域要解决的核心问题,对制造企业的信息流和业务流程具有重要影响,可以说企业BOM数据架构已是企业架构的一部分 ...
- [模拟赛]异或最大值 maxinum
此题在考试时用暴力,暴了30分. 献上30分代码: #include<stdio.h> ]; int main() { int n,t,c,i,max,j,d; freopen(" ...
- librtmp接收flv流中提取h264码流:根据多个资料汇总
rtmpdump可以下载rtmp流并保存成flv文件.如果要对流中的音频或视频单独处理,需要根据flv协议分别提取.简单修改rtmpdump代码,增加相应功能.1 提取音频:rtmpdump程序在Do ...
- 52道Python面试题
1.python中is和==的区别 Python中对象包含的三个基本要素,分别是:id(身份标识) .type(数据类型)和value(值).‘==’比较的是value值‘is’比较的是id 2.简述 ...
- 简单的PL/SQl链接远程ORACLE数据库方法
简单的PL/SQl链接远程ORACLE数据库方法 PLSQL Developer新手使用教程 pasting