Exception&Error

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语句实现的

时间: 2024-10-21 06:01:41

Exception&Error的相关文章

Java异常处理总结Exception\Error

Java异常处理总结Exception\Error 2012-12-28 08:17:17|  分类: JAVA |  标签:java  |举报|字号 订阅 Java异常处理总结 异常处理是程序设计中一个非常重要的方面,也是程序设计的一大难点,从C开始,你也许已经知道如何用if...else...来控制异常了,也许是自发的,然而这种控制异常痛苦,同一个异常或者错误如果多个地方出现,那么你每个地方都要做相同处理,感觉相当的麻烦! Java语言在设计的当初就考虑到这些问题,提出异常处理的框架的方案,

解决配置IaaS中Endpoint系统日志报错:ignoring exception:Error executin gquery usp

为vRA Infrastructure配置Endpoint之后,系统提示下图所示的故障: 1.  DataBaseStatsService: ignoring exception: Error executing query usp_SelectAgent Inner Exception: Error executing query usp_SelectAgentCapabilities 这个故障是由于MSDTC服务的问题导致,因此,请点击Administrative Tools > Compo

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

一.java.net.SocketException 1.java.net.SocketException:Connection reset 首先,如果一端的Socket被关闭(或主动关闭,或因为异常退出而 引起的关闭),另一端仍发送数据,发送的第一个数据包引发该异常(Connect reset by peer). 然后,一端退出,但退出时并未关闭该连接,另一端如果在从连接中读数据则抛出该异常(Connection reset). 简单的说就是在连接断开后的读和写操作引起的. 2.如果在报错中有

JAVA基础 Exception, Error

转载请附上本文地址: http://www.cnblogs.com/nextbin/p/6219677.html 本文参考: JAVA源码 http://swiftlet.net/archives/998 http://blog.csdn.net/kingzone_2008/article/details/8535287 Exception和Error皆继承自Throwable.下面看看这3个类的源码注释,也就明白许多. 异常(Exception)分为checked异常和unchecked异常.

DOM Exception error

INDEX_SIZE_ERR  code 1                              索引是负值,或者超过了索引值 DOMSTRING_SIZE_ERR  code 2                     DOMstring 的特定字符数据太大 HIERARCHY_REQUEST_ERR  code 3               字节不允许有子节点,或者新节点是该节点的祖先节点了 WRONG_DOCUMENT_ERR  code 4                  试图

DOM Exception error 类型

INDEX_SIZE_ERR  code 1                              索引是负值,或者超过了索引值 DOMSTRING_SIZE_ERR  code 2                     DOMstring 的特定字符数据太大 HIERARCHY_REQUEST_ERR  code 3               字节不允许有子节点,或者新节点是该节点的祖先节点了 WRONG_DOCUMENT_ERR  code 4                  试图

上手并过渡到PHP7(4)——取代fatal error的engine exceptions

上手并过渡到PHP7 取代fatal error的engine exceptions 泊学原文链接泊学代码秀视频 自从PHP 4以来,PHP的错误处理几乎就是一成不变的.只不过在PHP 5.0里添加了E_STRICT,在PHP 5.2里添加了E_RECOVERABLE_ERROR,在PHP 5.3里,添加了E_DPRECATED这几种Error level.尽管PHP 5中加入了Exception,但PHP中只有很少的模块使用了这个机制(例如:pdo和spl).在PHP 7中,这个尴尬的现状,终

.Net下Unhandled Exception的捕获

C# 处理unhandled Exception方式如下:1.    在程序的Main()方法中增加如下代码.      //处理线程未处理的异常   Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);   //处理系统未处理的异常    AppDomain.CurrentDomain.UnhandledException +=

Cloning EBS from Linux 5 to Linux 6 Fails: "Error While Loading Shared Libraries: libclntsh.so.10.1

SYMPTOMS  During clone Oracle Applications R12 from Linux 5 to Linux 6 the following error occurs in the apps tier: perl adcfgclone.pl appsTier 73% completed RC-50004: Fatal: Error occurred in ApplyAppsTier: StackTrace - java.lang.reflect.InvocationT