Java异常

Java异常总结

Java把所有可能的错误都归入到异常类的层次结构中,它们的基类是Throwable。在Java中,Throwable类或其子类的对象才能被Java的错误机制处理。

Throwable可以对特定的错误提供较多的信息,通常是一个字符串。类定义如下:

public class Throwable extends Object

{        //构造方法

        

Throwable()
          
构造一个将 null 作为其详细消息的新 throwable

Throwable(String message)
          
构造带指定详细消息的新 throwable

Throwable(String message, Throwable cause)
          
构造一个带指定详细消息和 cause 的新 throwable

Throwable(Throwable cause)
          
构造一个带指定 cause (cause==null ? null :cause.toString())(它通常包含类和 cause 的详细消息)的详细消息的新 throwable

//其他方法

 Throwable

fillInStackTrace()
          
在异常堆栈跟踪中填充。

 Throwable

getCause()
          
返回此 throwable cause;如果 cause 不存在或未知,则返回 null

 String

getLocalizedMessage()
          
创建此 throwable 的本地化描述。

 String

getMessage()
          
返回此 throwable 的详细消息字符串。

 StackTraceElement[]

getStackTrace()
          
提供编程访问由 printStackTrace() 输出的堆栈跟踪信息。

 Throwable

initCause(Throwable cause)
          
将此 throwable cause 初始化为指定值。

 void

printStackTrace()
          
将此 throwable 及其追踪输出至标准错误流。

 void

printStackTrace(PrintStream s)
          
将此 throwable 及其追踪输出到指定的输出流。

 void

printStackTrace(PrintWriter s)
          
将此 throwable 及其追踪输出到指定的 PrintWriter

 void

setStackTrace(StackTraceElement[] stackTrace)
          
设置将由 getStackTrace() 返回,并由 printStackTrace() 和相关方法输出的堆栈跟踪元素。

 String

toString()
          
返回此 throwable 的简短描述。

 

所有扩充Throwable的类一般应覆盖它的两个构造方法:一个是无输入参数的构造方法,另一个是接受字符串参数的构造方法。

Java程序遇到不可预料的错误时,会实例化一个Throwable类的子类对象。这个对象将包含对错误的描述信息以及当前引起错误对象的状态。访问该对象,可以将信息和状态输出到控制到。此外,通过正确解释这个对象,程序能够试图捕获这个错误并纠正它,或者至少能够正确地完成清除工作和控制危害。

Trowable类直接派生出连个字类:Exception类和Error类。

Exception

表示一个合理的应用程序产生的可能修复的错误。用于表示一切可以被捕获且可能恢复的异常情况。

如果出现在程序中,唯一可以做的是等待程序的崩溃。

 

Error

表示发生严重错误一般是指Java虚拟机相关的问题。这一类错误无法修复或不可能捕获,将导致应用程序中断。

可能出现在任何程序中,如果他们出现,程序应该试图纠正它,或者至少返回到程序可识别和可以控制的和状态,并允许程序继续工作。

 

Exception类型的一场中,有一种异常很常见,就是所谓的运行时异常(Runtime Exception)。再Java中,专门定义了Runtime Exception类,它继承了Exception类,使用try-catch块可以捕获。这类异常若是处理得当,通常可以避免。

 

通常编程中出现的异常是访问指向空指针的变量或者访问无效的数组元素,须注意:

         在访问一个可能没有正确初始化的引用变量前,首先检查它是否指向空值。

         当有可能使用一个超过数组范围的下表来访问数组元素时,应该先检查下标变量是否大于数组的最大长度或者是否小于等于零。

 

隐式和显式异常

一个隐式的错误或异常Implicit Errors是起源于Error类或RuntimeException类。其他类型的异常则被称作显示异常。

隐式异常可能出现在任何类和方法中。在运行时异常的情况下,我们可以有策略地放置if语句来阻止它的产生;但是在Error的情况下,一般没有特别有效的方法阻止它。

Throwable相关的主要类的分类层次关系

Throwable

getMessage();toString();printStackTrace();

Error

Exception

 

RuntimeException

IOException

InterruptedException

Inplicit Errors

Explicit Errors

 

包含在java.lang中的异常

比较常见的异常类

异常类的含义

ArithmaticException

算术运算时发生的异常

ArrayIndexOutOfBoundsException

使用非法下标访问数组

ArrayStoreException

企图把一个错误类型的对象存入数组中

ClassCastException

试图将一个对象转换成并非它的子类的实例

IllegalArgumentException

传递了一个错误的参数给某个方法

IllegalThreadStateException

对于被要求的操作,线程没有出在一个合适的状态

InterruptedException

一个线程正在等待,休眠或者暂停了很长时间,而另一个线程使用Thread类的中断方法中断了它

NoSuchFiledException

表明类中没有这个特定名字的域

NoSuchMethodException

没有发现某个特定的方法

NullPointerException

当需要引用一个对象时,应用程序试图使用空对象

NumberFormatException

试图把一个不合法的字符串转化成数值类型

SecurityException

表明违法安全规则

StringIndexOutOfBoundsException

字符串的下标值为负,或大于等于字符串的长度

这些异常基本上是可以防止的,因为它们其中很大部分都继承了RuntimeException

java.awt包也包含一些异常类,但这些异常很少发生。

异常类

异常类的定义

AWTException

一个抽象窗口工具集异常出现

IllegalComponentException

对于要求的操作,AWT组件没有处于一个合适的状态

java.io中的异常与I/O操作有关,通常发生在从磁盘或者连接的网络上读取数据的时候。一般无法阻止它们的发生,但是可以阻止它们产生更大的破坏。

异常类

异常类的定义

EOFException

在读取数据时,指针已达到文件或流的尾部。通常数据输入流使用这种异常,而其他的输入流一般在到达流的尾部时范围一个特殊值。

FileNotFoundException

文件无法找到

IOException

某种类型的I/O异常发生

InterruptedIOException

I/O操作被中断

java.net中的异常

异常类

异常类的定义

ConnectException

当试图连接远程地址或端口时,连接请求被拒绝

MalformedException

创建了一个不正确的URL地址

NoRuteToHostException

当试图连接远程地址或端口时,无法到达远程主机

ProctolException

一些基本的协议错错误,例如TCP错误

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值