1、异常概述
在程序中,错误可能产生于程序员没有预料到的各种情况,或者是超出了程序员可控制范围的环境因素,如用户的坏数据、试图打开一个根本不存在的文件等。在Java中这种在程序运行是可能出现的一些错误称为异常。异常是一个在程序执行期间发生的事件,它中断了正在执行的程序的正常指令流。
2、捕捉异常
Java语言的异常捕获结构由try、catch和finally3部分组成。其中,try语句块存放的是可能发生异常的Java语句;catch程序块在try语句之后,用来激发被捕获的异常;finally语句块是异常处理结构的最后执行部分,无论try语句块中的代码如何退出,都将执行finally语句块。
语句如下:
try{
//程序代码块
} catch(Exceptiontype1 e){
//对Exceptiontype1的处理(如:e.getMessage();)
} catch(Exceptiontype2 e){
//对Exceptiontype2的处理
}
...
finally{
//程序块
}
使用try-catch语句进行异常处理时,程序不会因为异常而终止。当try代码块中的语句发生异常是,程序就会跳转到catch代码块中执行,执行完catch代码块中的程序代码后,将继续执行catch代码块后的其他代码,而不会执行try代码块中发生异常语句后面的代码。
Java的异常处理时结构化的,不会因为一个异常影响整个程序的执行。
注:
Exception是try代码快传递给catch代码块的变量类型,e是变量名。catch代码块中语句“e.getMessage();”用于输出错误性质。通常,异常处理常用以下3个函数来获取异常的有关信息:
getMessage()函数:输出错误性质。
toString()函数:给出异常的类型与性质。
printStackTrace()函数:支出异常的类型、性质、栈层次以及出现在程序中的位置。
3、抛出异常
1.使用throws关键字抛出异常
throws关键字通常被应用在生命方法时,用来指定方法可能抛出的异常。多个异常可使用逗号分隔。
如:
public class Shoot{//创建类
static void pop() throws NegativeArraySizeException{//定义方法并抛出异常
int[] arr = new int[-3];//创建数组
}
public static void main(String[] args){//主方法
try{
pop();
//调用pop()方法
} catch (NegativeArraySizeException e){
System.out.print("pop()方法排除的异常");//输出异常信息
}
}
}
运行结果:
pop()方法抛出的异常
使用throws关键字将异常抛给上一级后,如果不想处理该异常,可以继续向上抛出,但最终要有能够处理该异常的代码。
2.使用throw关键字抛出异常
throw关键字通常用于方法体中,并且抛出一个异常对象。程序在执行到throw语句是立即终止,它后面的语句都不执行。通过throw抛出异常后,如果想在上一级代码中来捕获并处理异常,则需要再抛出异常的方法中使用throws关键字在方法的声明中指明要抛出的异常;如果要捕捉throw抛出的异常,则必须使用try-catch语句块。
如:
public class MyException extends Exception{//创建自定义异常类
String message;
public MyException(String ErrorMessagr){//父类方法
message = ErrorMessagr;
}
public String getMessage(){//覆盖getMessage()方法
return message;
}
}
public class Captor{//创建类
static int quetient(int x,int y)throws MyException{//定义方法抛出异常
if(y < 0){
throw new MyException("除数不能是负数");//异常信息
}
returm x/y;//返回值
}
public static void main(String args[]){
try{
int result = quetient(3,-1);
}catch (MyException e){
System.out.print(e.getMessage());//处理自定义异常
}catch (ArithmeticException e){

System.out.print("除数不能为0");//处理ArithmetticException异常
}catch (Exceotion e){
System.out.print("程序发生了其他的异常");//处理其他异常
}
}
}
上述实例使用了多个catch语句来捕捉异常。由于Exception是所有异常类的父类,如果将catch(Exception e)代码块放在其他两个代码块的前面,后面的代码块将永远得不到执行,所以catch语句的顺序不可调换。
4、运行时异常和一般异常
RuntimeException异常是程序运行过程中产生的异常。Java类库的每个包中都定义了异常类,所有的这些类都是Throwable类的子类。Throwable类派生了两个子类,分别是Exception和Error类。Error类及其子类用来描述Java运行系统中的内部错误以及资源耗尽的错误,这类错误比较严重。Exception类称为非致命性类,可以通过捕捉处理使程序继续执行。
Exceotion类有根据错误发生的原因分别为运行时异常(RuntimeException)和一般异常(CheckedException)。对于后者,即一般异常,Java要求我们必须对其进行try-catch或者throws处理;而对于运行时异常我们可以不处理。这样的异常由虚拟机接管。出现运行时异常后,系统会把异常一直往上层抛,一直遇到处理代码为止。如果不对运行时异常进行处理,那么出现运行时异常后,要么是线程终止,要么是主程序终止。对于运行时异常,一般不建议再程序中进行捕获处理,防止再程序的运行中掩盖错误使其无法被察觉。
5、Java常见异常
常见RuntimeException异常:
NullPointerException空指针异常
ArrayIndexOutOfBoundsException数组下表越界异常
ArithmeticExceotion算数异常
ArratStoreException数组中包含不兼容的值抛出的异常
IllegalArgumentException非法参数异常
SecurityException安全性异常
NegativeArratSizeException数组长度为负异常
更多常见异常:
NumberFormatException数字格式异常
UnsupportedOperationException不支持的操作异常
ClassCastException类型转换异常
ClassNotFoundException未找到相应类异常
SQLException操作数据库异常
NoSuchFielException字段未找到异常
NoSuchMethodException方法为找到抛出的议程
StringIndexOutOfBoundsException字符串索引超出范围抛出的异常
IOException输入输出异常
IllegalAccessException不允许方位某类异常
InstantiationException当应用程序试图使用Class类中的newInstance()方法穿件一个类的实例,而指定的类对象无法被实例化是,抛出该异常
EOFException文件已结束异常
FileNotFoundException文件未找到异常
NumberFormatException数字格式异常
UnsupportedOperationException不支持的操作异常
ClassCastException类型转换异常

Java异常处理的方法的更多相关文章

  1. 这几种Java异常处理方法,你会吗?

    摘要:我们在软件开发的过程中,任何语言的开发过程中都离不开异常处理. 本文分享自华为云社区<Java异常处理学习总结>,作者: zekelove . 我们在软件开发的过程中,任何语言的开发 ...

  2. 札记:Java异常处理

    异常概述 程序在运行中总会面临一些"意外"情况,良好的代码需要对它们进行预防和处理.大致来说,这些意外情况分三类: 交互输入 用户以非预期的方式使用程序,比如非法输入,不正当的操作 ...

  3. java异常处理(父子异常的处理)

    我当初学java异常处理的时候,对于父子异常的处理,我记得几句话“子类方法只能抛出父类方法所抛出的异常或者是其子异常,子类构造器必须要抛出父类构造器的异常或者其父异常”.那个时候还不知道子类方法为什么 ...

  4. Java 异常处理

    异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的. 比如说,你的代码少了一个分号,那么运行出来结果是提示是错误java.lang.Error:如果你用System.out ...

  5. 《转载》Java异常处理的10个最佳实践

    本文转载自 ImportNew - 挖坑的张师傅 异常处理在编写健壮的 Java 应用中扮演着非常重要的角色.异常处理并不是功能性需求,它需要优雅地处理任何错误情况,比如资源不可用.非法的输入.nul ...

  6. JAVA 异常处理机制

    主要讲述几点: 一.异常的简介 二.异常处理流程 三.运行时异常和非运行时异常 四.throws和throw关键字 一.异常简介 异常处理是在程序运行之中出现的情况,例如除数为零.异常类(Except ...

  7. Java异常处理和设计

    在程序设计中,进行异常处理是非常关键和重要的一部分.一个程序的异常处理框架的好坏直接影响到整个项目的代码质量以及后期维护成本和难度.试想一下,如果一个项目从头到尾没有考虑过异常处理,当程序出错从哪里寻 ...

  8. 深入理解java异常处理机制

       异常指不期而至的各种状况,如:文件找不到.网络连接失败.非法参数等.异常是一个事件,它发生在程序运行期间,干扰了正常的指令流程.Java通 过API中Throwable类的众多子类描述各种不同的 ...

  9. Java提高篇——Java 异常处理

    异常的概念 异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的. 比如说,你的代码少了一个分号,那么运行出来结果是提示是错误java.lang.Error:如果你用Syst ...

随机推荐

  1. java集合类,详解

    集合详解 1.1HashSet HashSet是Set接口的一个子类,主要的特点是:里面不能存放重复元素,而且采用散列的存储方法,所以没有顺序.这里所说的没有顺序是指:元素插入的顺序与输出的顺序不一致 ...

  2. shell 文件条件判断

    按照文件类型进行判断 '-b 文件' 判断该文件是否存在,并且是否为块设备文件(是块设备文件为真) '-c 文件' 判断该文件是否存在,并且是否为字符设备文件(是字符设备文件为真) '-d 文件' 判 ...

  3. 【资料收集】QT 环境安装配置

    (很详细,极力推荐) [OpenCV] -- win7下配置OpenCV的Qt开发环境 - 代码人生 - 博客频道 - CSDN.NET  http://blog.csdn.net/qiurisuix ...

  4. asp.net webapi 返回json结果的方法

    第一种: public static void Register(HttpConfiguration config) { //1.将默认的xml格式化程序清除 GlobalConfiguration. ...

  5. 玩转X-CTR100 l STM32F4 l VIN输入电压采集(锂电池电量计)

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ]      本文介绍X-CTR100控制器 采集VIN ...

  6. easyui弹框后销毁当前tab弹框不显示的解决方式

    var id=$("#pageId").val(); var message = "{\"id\":" + id+ ",\&quo ...

  7. api中locale或language字段,传送客户端地域信息,一般为下划线

    在请求新闻的分类信息和新闻内容时,需要在api地址中传入local参数,根据用户地区不同返回不同的新闻和分类. local参数,通过navigator.languages[0]获取, 但是,问题来了: ...

  8. github咋用昂

    github-trend:https://github.com/trending github-usingway:https://zhuanlan.zhihu.com/p/41899093 githu ...

  9. python监控服务器的主备模式

    #-*- coding:utf8 -*-import paramikoimport re def check_active_ac(intervals=1): client = paramiko.Tra ...

  10. C# 解压

    需要ICSharpCode.SharpZipLib.dll 网上有很多 先添加文件引用 再添加引用 using ICSharpCode.SharpZipLib.Zip; #region 解压 /// ...