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 和 .NET Framework 中的 MEF2
MEF,Managed Extensibility Framework,现在已经发布了三个版本了,它们是 MEF 和 MEF2. 等等!3 去哪儿了?本文将教大家完成基于 MEF2 的开发. ME ...
- c++中重载,重写,覆盖
1.重载 重载从overload翻译过来,是指同一可访问区内被声明的几个具有不同参数列表(参数的类型,个数,顺序不同)的同名函数,根据参数列表确定调用哪个函数,重载不关心函数返回类型. 相同的范围(在 ...
- bzoj 1001 [BeiJing2006]狼抓兔子——最小割转最短路
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1001 #include<cstdio> #include<cstring& ...
- php 操作提示框
/** * 跳转 * @param type $msg * @param type $url */ protected function jump($msg, $url) { $html = < ...
- SecureCRT上传下载文件教程(Zmodem使用教程)
SecureCRT是一个仿真终端连接工具.它可以方便的连接SSH服务器,远程管理Linux.同时,它还能使用多种协议方便的上传下载文件.其中Zmodem是SecureCRT支持比较好的一种古老的上传下 ...
- composer包php-amqplib
php-amqplib官方文档 url:http://www.rabbitmq.com/tutorials/tutorial-one-php.html #测试demo: url: http://**. ...
- Bitcoin 涉及到的数据结构和算法分析
Bitcoin 2008 年中本聪提出 Bitcoin 的概念. 2009 年项目上线. 所有 coin 由 mining 产生,一共 2100 万枚.通过调整 difficulty, 确保每隔10m ...
- java代码---charAt()和toCharry()的用法
总结:charAt()是返回字符型,把字符串拆分成某个字符,返回指定位置的字符.可以把字符串看成char型数组 package com.sads; ///输出一个大写英文字母的 public clas ...
- Oracle查询结果中的日期格式显示到毫秒数,如何去掉多余的数
@Temporal(TemporalType.TIMESTAMP) @Column(name="createTime",nullable=false) private Date c ...
- C语言实现Base64编码/解码
Bse64是一种以64个可打印字符对二进制数据进行编码的编码算法.base64在对数据进行编码时以三个8位字符型数据为一组,取这三个字符型数据的ASCII码,然后以6位为一组组成4个新的数据,这4个新 ...