java中异常的处理:
1.java中提供的是异常处理的异常捕获
“捕获”:当我们执行代码时,一旦出现异常,就会在异常的代码处生成一个对应的异常类型,并将此异常捕获
“处理”:对上一步捕获的异常类的对象处理。
try{
可能出现的异常的代码;
}
catch(Exception e){
异常出现时怎么处理;
}
如下:
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class Test1 {
public static void main(String[] args) {
FileReader re=null;
try {
re =new FileReader("d:a.txt");
char c=(char)re.read();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
if(re!=null){
re.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
除了这种还有一种处理方法throws,添加throws声明将异常抛出给更上一层的调用者,此方法无法处理异常,将异常再次抛出。
如下:
import java.io.FileReader;
import java.io.IOException;
public class Test2 {
public static void main(String[] args) throws IOException {
readF();
}
public static void readF() throws IOException {
FileReader re=null;
re=new FileReader("d:a.txt");
System.out.println("步骤1");
char c=(char)re.read();
System.out.println(c);
if(re!=null){
re.close();
}
}
}
Java程序中的异常,许多时候可以自己定义异常来生声明异常,保证程序可以准确捕获异常。
例如:
public class Test3 {
public static void main(String[] args) {
Student s=new Student();
s.setAge(-10);
}
}
class Student{
private int age;
public int getAge(){
return age;
}
public void setAge(int age) {
if(age<0){
throw new AgeException("年龄不得为负数");
}
this.age = age;
}
}
class AgeException extends RuntimeException{
public AgeException(){
}
public AgeException(String a){
super(a);
}
}