您的位置:首页 > 编程语言 > Java开发

java异常处理

2016-04-01 19:31 337 查看
Java的错误与异常

错误(error)指程序运行时遇到的硬件或操作系统的错误。
一般是指虚拟机相关的问题,如系统崩溃,虚拟机出错误等,这种错误无法恢复或不可能捕获,将导致应用程序中断,通常不处理。

异常(exception)指在硬件和操作系统正常时,程序遇到的运行错。

 java异常被分为两大类:Checked异常和Runtime异常(运行时异常)。

所有RuntimeException类及其子类的实例被称为Runtime异常,不是RuntimeException类及其子类的异常实例则被称为Checked异常。

只有java语言提供了Checked异常,其他语言都没有提供,java认为Checked异常都是可以被处理(修复)的异常,所以java程序无须显式的处理Checked异常。如果程序没有处理Checked异常,该程序在编译时就会发生错误,无法通过编译。

错误与异常类

Error错误类
Exception异常类
 除数为0的算术异常、数组下标越界异常、空指针异常等。



常见的异常

1.算术异常ArithmeticException:除数为0
2.空对象异常NullPointerException
int a[] = null;

a[0]= 1;           //对空数组中的元素进行操作,产生空对象异常

Stringstr = null;

System.out.println(str.length());          //调用空对象的方法,产生空对象异常

3.类型强制转换异常ClassCastException
Objectobj = new Object();

Stringstr = (String) obj;

4.负数组长度异常NegativeArraySizeException 

int a[] = new int [-1];  //产生负数组长度异常

5.数组下标越界异常ArrayIndexOutOfBoundsException
int a[] = new int[1];

a[1] = 1;  //产生数组下标越界异常

6.数值格式异常NumberFormatException
int j = Integer.parseInt("abc");         //产生数值格式异常

异常处理语句语法
try
{
    语句1                     //存在潜在异常的代码
}
catch(异常类 异常对象)
{
    语句2                      //捕获到异常并进行处理的代码
}
finally
{

    语句3                       //最后必须执行的代码,无论是否捕获到异常。异常机制总是保证finally块总是被执行。只有
     //finally块,执行完成之后,才会回来执行try或者catch块中的return或者throw语句,如果
    //finally中使用了return或者   throw等终止方法的语句,则就不会跳回执行,直接停止。

}

使用finally回收资源

java的垃圾回收机制不会回收任何的物理资源,垃圾回收机制只回收堆内存中对象所占用的内存。

在哪里回收这些物理资源呢?

答:在finally块中,因为如果try块的某条语句引起一场,该语句后的其他语句通常不会被执行,那将导致位于该语句后的资源回收语句得不到执行;如果在catch块里进行资源回收,但catch块完全有可能得不到执行,这也将导致不能及时回收这些物理资源。所以我们不管try块中的代码是否出现异常,也不管哪个catch块会被执行,finally块总会被执行。

抛出自定义异常对象的throw语句
throw  异常对象

publicvoid set(int age)

{

    if (age>0 && age<100)

        this.age = age;

    else

        throw new Exception("IllegalAgeData");    //抛出异常

}

方法声明抛出异常的throws子句

[修饰符]  返回值类型 方法([参数列表]) [throws  异常类]

public static int parseInt(String s) throws NumberFormatException

异常对象包含的常用方法:

1.       getMessage();返回该异常的详细描述字符

2.       printStackTrace():将该异常的跟踪栈信息输出到标准错误输出。

3.       printStackTrace(PrintStream s):将该异常的跟踪栈信息输出到指定的输出流

4.       getStackTrace():返回该异常的跟踪栈信息。

java的异常跟踪栈

异常对象的printStackTrace方法用于打印异常的跟踪栈信息,根据printStackTrace方法的输出结果,我们可以找到异常的源头,并跟踪到异常一路触发的过程.

虽然printStackTrace()方法可以很方便地追踪异常的发生状况,可以用它来调试,但是在最后发布的程序中,应该避免使用它。而应该对捕获的异常进行适当的处理,而不是简单的将信息打印出来。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  异常 错误 try catch finally