Java异常处理

1:什么是异常

异常(Exception)也叫异常。在Java编程语言中,异常就是程序在运行过程中由于硬件设备问题、软件设计错误、缺陷等导致的程序错误。

1.1:想打开的文件不存在

1.2:网络连接中断

1.3:操作数据超出预定范围

1.4:正在装载的类文件丢失

1.5:访问的数据库打不开 等

2:异常处理机制

2.1:在java程序执行过程中,如果出现了异常的事件,就会生成一个异常对象。这个对象可能是由正在运行的方法生成,也可能是java 虚拟机生成,其中包含一些指明异常事件的类型以及当异常发生时程序运行状态等

Java语言提供了两种处理异常的机制

2.1.1:捕获异常

在java程序运行过程中系统得到一个异常对象时,它将沿着方法的调用栈逐层回溯,寻找处理这一异常代码。找到后,运行时系统把当前异常对象交给这个方法进行处理,这一过程叫做捕获异常。

2.1.2:声明抛弃异常

当java程序运行中,系统得到一个异常对象时,如果一个方法并不知道如何处理所出现的异常,则可在该方法声明时,声明抛弃(Throws)异常

2.2:异常处理的层次

Java中异常事件分为两大类。一类继承是Error  Object --->Throwable -->Error 另一类是 Exception  Object-->Throwable-->Exception

在Exception之下还有一些子类,其中继承于RuntimeException的类代表的是Java虚拟机在运行时所生成的异常,这些异常叫做运行时异常,其他继承与类Exception的子类则代表非运行时异常。

常见的运行时异常有以下几种。

类型转换异常 ClassCastException

数组超界异常ArrayIndexOutBoundsException

指定数组维数为负值异常 NegativeArraySizeException

算术异常 ArithmeticException

Java内部异常 InternalException 即JVM抛出的异常

内存溢出的异常 OutOfMemeoryException

没有找到类定义异常 NoClassDefFoundException

空指针异常 NullPointerException

常见的非运行时异常

ClassNotFoundException :找不到类或接口所产生的异常

CloneNotSupportedException :使用对象的clone方法但无法执行Cloneable所产生的异常

IllegalAccessException :类定义不明确所产生的异常

IOException:一般情况下不能完成I/O操作所产生的异常。

EOFException:打开文件没有数据可以兑取所产生的异常

FileNotFoundException:在文件系统中找不到文件名称或路径时所产生的异常

3:异常的处理

对于运行时异常,Java编译器允许程序不对它们做出处理;但是对于非运行时异常,则要求程序必须做捕获或者声明抛弃处理,否则是无法通过程序编译的。

3.1一个方法中如果对某种类型的异常对象提供了相应的处理代码,则这个方法可捕获该中异常。捕获异常用try-catch-finally语句实现

3.1.1 try

捕获异常的第一步是用try{ }选定捕获异常的范围,由try所限定的代码块中的语句在执行过程中可能会生成异常对象并抛弃。

3.1.2 catch

每一个try代码块可以可以伴随一个或多个catch语句,用于处理try代码块中所生成的异常事件。Catch语句只需要一个形式参数来指明它所能够捕获的异常类型,这个类必须是Throwable的子类,运行时系统同错参数值把被抛弃的异常对象传递给catch块。捕获异常的顺序和catch语句的顺序有关,当捕获一个异常后,剩下的catch语句就不在进行匹配。因此,在安排catch语句的顺序时,首先应该捕获最特殊的异常,然后再逐渐一般化。也就是说,一般先安排子类,再安排父类

3.1.3 finally

捕获异常的最后一步是通过finally语句为异常处理提供了一个统一的出口。一般用来关闭文件或释放资源

3.2 声明抛弃异常

如果在一个方法中生成了一个异常,但是这个方法并不确定的知道如果对这一异常进行处理,这时,该方法就应该声明抛弃异常,使得异常对象可以从调用栈向后传播,知道有合适的方法捕获它为止;声明抛弃异常是在一个方法声明的throws子句中指明的。

3.3 抛出异常

抛出对象就是产生异常对象的过程,首先要生成异常对象,异常或由虚拟机生成,或者由某些类的实例生成,也可以在程序中生成。在方法中,抛出异常对象时通过throw语句实现的

Exception&Error的更多相关文章

  1. Java异常处理总结Exception\Error

    Java异常处理总结Exception\Error 2012-12-28 08:17:17|  分类: JAVA |  标签:java  |举报|字号 订阅   Java异常处理总结          ...

  2. 遇到的Exception/error及解决办法记录汇总

    一.java.net.SocketException 1.java.net.SocketException:Connection reset 首先,如果一端的Socket被关闭(或主动关闭,或因为异常 ...

  3. JAVA基础 Exception, Error

    转载请附上本文地址: http://www.cnblogs.com/nextbin/p/6219677.html 本文参考: JAVA源码 http://swiftlet.net/archives/9 ...

  4. Exception error message with incorrect line number

    In Release mode the number in front of the exception is NOT the line of code. Instead it's an offset ...

  5. DOM Exception error

    INDEX_SIZE_ERR  code 1                              索引是负值,或者超过了索引值 DOMSTRING_SIZE_ERR  code 2       ...

  6. DOM Exception error 类型

    INDEX_SIZE_ERR  code 1                              索引是负值,或者超过了索引值 DOMSTRING_SIZE_ERR  code 2       ...

  7. ** exception error: no match of right hand side value

    错误发生的情况是模式匹配失败.对于badmatch异常,很难找到单一的原因,但经常性的原因是你无意间尝试绑定已绑定过的变量.

  8. keras:Exception: Error when checking model target

    问题: 用keras的functional API搭建多输入多输出模型时,报错某个输出层对应的类标数组大小与模型中不一致. 解决办法:升级keras到最新版(doge脸)keras迭代太快了啊摔,总有 ...

  9. Kestrel: System.Exception: Error -4092 EACCES permission denied

    字面理解:  权限问题.. 这种情况往往是因为运行的端口被占用.. 可能是iis上有些站点使用了这个端口.. 也可能是其他原因.. 但大部分是端口问题..

随机推荐

  1. windows bat 批处理 !vm 合并快播文件

    今天简单的写了一个bat批处理文件 用来处理快播的p2p的文件,一般回事这样的目录 你可以下载如下代码 @echo off for /r %%a in (.) do ( echo %%a cd %%a ...

  2. request获取请求头和请求数据

    package cn.itcast.request; import java.io.IOException; import java.io.InputStream; import java.io.Pr ...

  3. NFS服务器搭建

    1. 安装nfs-kernel-server,然后编辑/etc/exports. /sambadata/nfsserver    10.0.0.0/255.255.255.0(fsid=0,all_s ...

  4. 实现服务器端与客户端的实时通信 SignalR(1)

    一.本文出处:SignalR 实例介绍 (建议看原著里面有DEMO下载) 二.这篇文章介绍如何利用 VS2012 创建一个简单的实时聊天系统,建好后的样子如下(模拟三个在线用户):    三.Demo ...

  5. linq判断集合是否为空的方法

    Enumerable.Any 扩展方法可以判断集合为空: 如果不为空 if (!source.Any()) { //... }

  6. Android高级第十一讲之不同系统间的区别

    本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处! Android系统不断的升级,从基础到中级再到高级,逐步升级是软件工程敏捷开发的一个重点,在每个版本 ...

  7. [转][Android][Android Studio] *.jar 与 *.aar 的生成与*.aar导入项目方法

     转自:http://blog.csdn.net/qiujuer/article/details/39754517?utm_source=tuicool [Android][Android Studi ...

  8. kafka 安装

    kafka是一个分布式的消息缓存系统 kafka集群中的服务器都叫做broker kafka有两类客户端,一类叫producer(消息生产者),一类叫做consumer(消息消费者),客户端和brok ...

  9. HTTPS强制安全策略-HSTS协议阅读理解

    https://developer.mozilla.org/en-US/docs/Web/Security/HTTP_strict_transport_security [阅读理解式翻译,非严格遵循原 ...

  10. 《30天自制操作系统》16_day_学习笔记

    harib13a: 今天我们要继续折腾多任务,任务的高效管理是操作系统的一个重要的任务.在今天,我们将为系统创建更加完善的任务管理系统,其中包括优先级,任务等级等. 1.任务管理结构体 #define ...