Java中异常的基本应用(一)
在Java中,我们把异常当做一种对象来处理,正是异常机制的引入,使得我们的程序更加健壮。异常指示了一个不正常的条件,或者一个错误条件,简单地说就是一个中断了正常的指令流的事件。程序控制将无条件的抛至一个特定的代码段,在此将捕获异常并加以处理,由此将错误处理与程序的正常处理分离开来,错误就可以被单独处理了。
异常由Exception类及其子类的实例表示,大多数包都定义了自己的异常类型,它们往往是Exception的子类,我们也可以自己定义异常的类型。当错误条件出现时,应有一段代码用来创建异常对象。Exception对象要作为一个参数传递给负责处理的代码块,这就涉及到异常的抛出和捕获。

如图所示,可抛出的除了异常还有错误类。Error类通常指示一些重大的错误或者虚拟机错误,不应由程序捕获。至于异常则分为两类,分别是运行时异常和编译时异常,或者可以叫做unchecked异常和checked异常。我们通常会遇到的IO异常和SQL异常都属于checked异常,对于这种异常,编译器要求我们必须对其进行处理。而runtime exception则可以不作处理,由虚拟机来接管。
出现异常时,要么直接处理,要么向上抛出,等待上层调用方法进行处理。如果始终没有得到处理,那么如果是多线程就由Thread.run()抛出,如果是单线程就由main()抛出,之后相应的线程或整个程序退出。Runtime Exception和Error都可以不做处理,因此程序在遇到此类错误时,如果没有处理块程序就会终止退出。
异常的处理方式:
1、try-catch-finally结构处理异常
try{
//正常代码,包含可能出错的代码
//如果有return,先走finally再回来return
}catch(异常类型 Exception e){
//异常处理
}finally{
//finally块,无论程序是否出现异常都会运行
//异常的出口
}
2、暂不处理,向上抛出
throw用于手动抛出异常(系统无法识别的异常),throws进行声明,用于说明方法有可能发成的错误类型,调用该方法时进行try-catch处理。如果不声明,就需要在方法内进行try-catch处理。
public void setAge(int age) throws Exception{
if(age>=15&&age<=40){
this.age=age;
}else{
throw new Exception("年龄必须在15到40之间!");
}
该例在调用setAge方法时,进行try-catch处理,或者继续向上抛出。
Java中异常的基本应用(一)的更多相关文章
- 《java中异常和错误》
异常和错误的区别. 异常: 在Java中程序的错误主要是语法错误和语义错误,一个程序在编译和运行时出现的错误我们统一称之为异常,它是VM(虚拟机)通知你的一种方式,通过这种方式,VM让你知道,你(开发 ...
- 浅谈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中异常以及处理异常
一.异常简介 什么是异常? 异常就是有异于常态,和正常情况不一样,有错误出错.在java中,阻止当前方法或作用域的情况,称之为异常. java中异常的体系是怎么样的呢? 1.Java中的所有不正常类都 ...
- [转载]Java中异常的捕获顺序(多个catch)
http://blog.sina.com.cn/s/blog_6b022bc60101cdbv.html [转载]Java中异常的捕获顺序(多个catch) (2012-11-05 09:47:28) ...
- Java基础知识强化24:Java中异常
1.什么是异常 ? Java程序运行中,常常会遇到非正常的现象,这种情况称为运行错误.根据性质可以分为错误和异常.Java程序中(无论谁写的代码),所有抛出(throw)的异常都必须从Th ...
- java中异常的面试
https://blog.csdn.net/qq_36523638/article/details/79363652 1) Java中的检查型异常和非检查型异常有什么区别? 这又是一个非常流行的Jav ...
- JAVA中异常状况总结
之前在<会当凌绝顶>这本书中学到过对于异常处理的知识,当时也是根据书上的代码,自己进行编写大概知道是怎么回事儿,王老师给我们上了一节课之后,发现异常处理可以发挥很大的作用. 通过在网络上 ...
随机推荐
- 【算法Everyday】第一日 二叉查找树转双向链表
算法题目链接:http://bbs.csdn.net/topics/350093707 题目 // 1.把二元查找树转变成排序的双向链表 // 题目: // 输入一棵二元查找树,将该二元查找树转换成一 ...
- 老毛桃U盘启动盘制作工具V20140501完美贡献版
老毛桃U盘启动盘制作工具V20140501完美贡献版 下载地址:http://down.laomaotao.net:90/LaoMaoTao_V2014zhuangji.exe 老毛桃U盘装系统综合教 ...
- Building a Space Station(kruskal,说好的数论呢)
Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 3820 Accepted: 1950 Description You a ...
- 数学(莫比乌斯函数):BZOJ 2440 完全平方数
Description 小 X 自幼就很喜欢数.但奇怪的是,他十分讨厌完全平方数.他觉得这些 数看起来很令人难受.由此,他也讨厌所有是完全平方数的正整数倍的数.然而 这丝毫不影响他对其他数的热爱. 这 ...
- Windows下动态库的隐式调用
多年的工作经验告诉我Windows下使用动态库最简单的方法:使用def导出函数,然后隐式调用. 具体做法如下: (1)首先使用visual studio 创建“Win32项目”,如下图: (2)然后在 ...
- 高效算法——J 中途相遇法,求和
---恢复内容开始--- J - 中途相遇法 Time Limit:9000MS Memory Limit:0KB 64bit IO Format:%lld & %llu Su ...
- 自动化Cobbler安装
#install cobbler-server soft #date 2013.08.07 #disabled iptables and selinux /etc/init.d/iptables st ...
- android编程中setLayoutParams方法设置
第一篇 private LinearLayout generateHeadOfControl() { LinearLayout LayoutHead = createLayout(LinearLayo ...
- RJ45口线序的理解
RJ45线序就是TX_P / TX_N / RX_P / RX_N 四根线,分别用到的是1,2,3,6 因为TX要匹配RX,所以 线1 变成 另一端的 线3, 线2 变成 另一端的 线6 反过来也一样
- iOS 下的相册与图片处理
需求 很多公司项目中都会使用到相册,以及相机,保存图片,从相册中选取图片等等操作.本文将详细介绍该功能如何实现优化,以及使用一些优秀的第三方库来辅助完成我们的需求. photos framework ...