当前位置:编程学习 > JAVA >>

公共异常

Java编程语言提供几种预定义的异常。下面是可能遇到的更具共同性的异常中的几种:

ArithmeticException:整数被0除,运算得出的结果。

int i = 12 / 0;

NullPointerException:当对象没被实例化时,访问对象的属性或方法的尝试:

Date d = null;

System.out.println(d.toString());

NegativeArraySizeException:创建带负维数大小的数组的尝试。

ArrayIndexoutofBoundsException:访问超过数组大小范围的一个元素的尝试。

SecurityException:典型地被抛出到浏览器中,SecurityManager类将抛出applets的一个异常,该异常企图做下述工作(除非明显地得到允许):

访问一个本地文件

打开主机的一个socket,这个主机与服务于applet的主机不是同一个。

在运行时环境中执行另一个程序

异常的处理机制

一般来说,异常的处理机制有以下三种:

try-catch-finally  主动异常处理

throws 消极异常处理

throw 引入异常

实例分析

例1

问题的描述:

写一个常见的异常

解决方案:

请看下例:

[java]
public class TestException { 
    public static void main(String args[]) { 
        int i = 0; 
 
        String ss[] = { "Hello world!", "您好,世界!", "HELLO WORLD!!" }; 
 
        for (; i < 6; i++) { 
            System.out.println(ss[i]); 
        } 
    } 

public class TestException {
 public static void main(String args[]) {
  int i = 0;

  String ss[] = { "Hello world!", "您好,世界!", "HELLO WORLD!!" };

  for (; i < 6; i++) {
   System.out.println(ss[i]);
  }
 }
}

运行的结果为如图。

  \


 

要处理异常,将能够抛出异常的代码放入try块中,然后创建相应的catch块的列表,每个可能被抛出异常都有一个。如果生成的异常与catch中提到的相匹配,那么catch条件的块语句就被执行。在try块之后,可能有许多catch块,每一个都处理不同的异常。

请看下例:

[java]
class TestException2 { 
 
public static void main(String args[]) { 
 
int i = 0; 
 
String ss[] = { "Hello world!", "您好,世界!", "HELLO WORLD!!" }; 
 
for (; i < 5; i++) { 
 
try { 
 
System.out.println("第" + (i + 1) + "次循环:"); 
 
System.out.println(ss[i]); 
 
} catch (Exception e) { 
 
System.out.println("数组越界"); 
 
} finally { 
 
System.out.println("finally execute"); 
 

 

 

 

class TestException2 {

public static void main(String args[]) {

int i = 0;

String ss[] = { "Hello world!", "您好,世界!", "HELLO WORLD!!" };

for (; i < 5; i++) {

try {

System.out.println("第" + (i + 1) + "次循环:");

System.out.println(ss[i]);

} catch (Exception e) {

System.out.println("数组越界");

} finally {

System.out.println("finally execute");

}

}

}

}

运行的结果如图

  \

 

总结:从上例可以看出:不管出现不出现异常,finally语句块都会执行。在try语句块里除了System.exit(int)语句外,finally语句块必须执行。

Throws则是自己不处理异常,而交给上级处理,俗称“异常上抛”,比如:

public static void main(String args) throws RuntimeException

这样,一旦在代码里出现RuntimeException,在本类里不做任何处理动作,而是交由上次程序或者虚拟机去处理。

 

摘自  qq1712088151
 
补充:软件开发 , Java ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,