在程序在运行的时候可能会出现错误,程序要有能力处理错误,或者至少要知道发生的什么错误。
异常的基本概念 又称为例外,是特殊的运行错误对象 Java中声明了很多异常类,每个异常类都代表了一种运行错误,Java预定义的一些常见异常
非检查型异常 ArithmeticException例:非检查型异常——数组越界异常
HelloWorld.java
import java.io.*;
public class HelloWorld {
public static void main (String args[ ]) {
int i= 0;
String greetings[] = {"Hello world!", "No, I mean it!", "HELLO WORLD!!"};
while(i < 4){
System.out.println (greetings[i]);
i++;
}
}
}
程序定义了3个字符串,但是循环进行了4次,导致数组越界,所以在运行后会出现一个异常信息,并结束程序的运行。
检查型异常的处理
声明抛出异常 不在当前方法内处理异常,可以使用throws子句声明将异常抛出到调用方法中; 如果所有的方法都选择了抛出此异常,最后JVM将捕获它,当探测到异常时,方法可能会选择不处理异常,而是抛出异常给调用它的方法。
抛出异常的例子public void openThisFile(String fileName) throws java.io.FileNotFoundException {
//code for method
}
public void getCustomerInfo() throws java.io.FileNotFoundException {
// do something
this.openThisFile(" customer.txt");
// do something
}
如果在openThisFile中抛出了FileNotfoundException异常, getCustomerInfo将停止执行,并将此异常传送给它的调用者.
捕获异常的语法try {
statement(s)
} catch (exceptiontype name) {
statement(s)
} finally {
statement(s)
}
说明
try语句 其后跟随可能产生异常的代码块。 catch语句 其后跟随异常处理语句,通常都要用到两个方法: getMessage() 返回一一个字符串,对发生的异常进行描述。 printStackTrace() 给出方法的调用序列,一直到异常的产生位置。 finally语句 不论在try代码段是否产生异常,finally 后的程序代码段都会被执行。通常在这里释放内存以外的其他资源。注意事项
如果并列有多个catch语句捕获多个异常,则一般的异常类型放throw new ThrowableObject();
ArithmeticException e = new ArithmeticException0; throw e;
声明自己的异常类
自定义的所有异常类都必须是Exception的子类
声明语法如下
public class MyExceptionName extends SuperclassOfMyException {
public MyExceptionName( {
super("Some string explaining the exception");
}
}
张宜强
原创文章 475获赞 839访问量 27万+
关注
他的留言板
展开阅读全文