JAVA异常处理方法(详尽!!!)

前言

计算机在程序运行的过程中,总会遇到各种各样的错误。
而健壮的代码必须可以应对各种的错误。

如何知道自己的程序哪里出了问题呢?
下面介绍一种方法。
java内置了一套异常处理机制,就相当于用异常来代替了错误,这样程序就可以正常的运行啦~
注意:异常是一种类!!!!所有的异常都是Exception的子类。
try-catch方法:
用try标可能出现异常的语句,然后后面使用catch语句捕获异常信息。
下面是一个例子

//捕获异常
try {
			openTheFile;
		}catch(fileopenFailed)

有时候一段代码会抛出多种异常

new FileInputStream(f);
Date d=sdf.parse("2016-06-3");

这段代码会同时抛出文件不存在异常(FileNotFoundException)以及解析异常(PraseException),解决办法之一就是分别进行catch。

public class DoExercise {
//异常的相关练习
	public static void main(String[] args) {
		// TODO Auto-generated method stub				
		        File f = new File("d:/LOL.exe");
		 
		        try {
		            System.out.println("试图打开 d:/LOL.exe");
		            new FileInputStream(f);
		            System.out.println("成功打开");
		            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		            Date d = sdf.parse("2016-06-03");
		        } catch (FileNotFoundException e) {
		            System.out.println("d:/LOL.exe不存在");
		            e.printStackTrace();
		        } catch (ParseException e) {
		            System.out.println("日期格式解析错误");
		            e.printStackTrace();
		        }
		    }
		

}

还有一种方法就是把多个异常放到一个catch里面捕捉:

catch(FileNotFoundException|ParseException e){
}

这种方法的使用使得代码更加的紧凑,但是不确定具体的异常是什么了。

package exception;
 
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
 
public class TestException {
 
    public static void main(String[] args) {
 
        File f = new File("d:/LOL.exe");
 
        try {
            System.out.println("试图打开 d:/LOL.exe");
            new FileInputStream(f);
            System.out.println("成功打开");
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            Date d = sdf.parse("2016-06-03");
        } catch (FileNotFoundException | ParseException e) {
            if (e instanceof FileNotFoundException)
                System.out.println("d:/LOL.exe不存在");
            if (e instanceof ParseException)
                System.out.println("日期格式解析错误");
 
            e.printStackTrace();
        }
 
    }
}

同时注意finally的用法,无论异常有没有被执行,finally中的代码都会被执行

package exception;
 
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
 
public class TestException {
 
    public static void main(String[] args) {
         
        File f= new File("d:/LOL.exe");
         
        try{
            System.out.println("试图打开 d:/LOL.exe");
            new FileInputStream(f);
            System.out.println("成功打开");
        }
        catch(FileNotFoundException e){
            System.out.println("d:/LOL.exe不存在");
            e.printStackTrace();
        }
        finally{
            System.out.println("无论文件是否存在, 都会执行的代码");
        }
    }
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值