Java的一些高级特性(五)——测试和异常处理

关于测试的部分我们来看看assert关键字。需要使用assert关键字需要在Eclipse中的Run Configuration中的VM arguments配置上“-ea”,之后我们可以在代码中添加assert false语句来测试assert代码。


我们来看看简单的测试程序:

package com.freesoft.javaadvanced;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class TestAssert {
	public static void main(String[] args) {
		try {
			System.out.print("Please Input the 1st number:");
			String o1 = new BufferedReader(new InputStreamReader(System.in)).readLine();
			checkInput(o1);
			System.out.print("Please Input the 2nd number:");
			String o2 = new BufferedReader(new InputStreamReader(System.in)).readLine();
			checkInput(o2);
			System.out.print("Please Input the + - * / operator:");
			String o = new BufferedReader(new InputStreamReader(System.in)).readLine();
			
			switch (o) {
			case "+":
				System.out.println(Integer.parseInt(o1) + Integer.parseInt(o2));
				break;
			case "-":
				System.out.println(Integer.parseInt(o1) - Integer.parseInt(o2));
				break;
			case "*":
				System.out.println(Integer.parseInt(o1) * Integer.parseInt(o2));
				break;
			case "/":
				System.out.println(Integer.parseInt(o1) / Integer.parseInt(o2));
				break;
			default:
				assert false;
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	public static boolean checkInput(String s) {
		try {
			Integer.parseInt(s);
			return true;
		} catch (Exception e) {
			return false;
		}
	}

}

实际上一个更好的方法应该是在开发中引入单元测试,所以这一部分并不多说。


接下来我们讨论一下try...finally语句块:

package com.freesoft.javaadvanced;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.nio.CharBuffer;

public class TestFinally {
	public static void main(String[] args) throws IOException {
		FileReader reader = null;
		try {
			reader = new FileReader("aaa.txt");
			CharBuffer cbuf = null;
			reader.read(cbuf);
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} finally {
			// 必须判断,否则会抛出异常
			if (reader != null)
				reader.close();
		}
	}

}

我们看到,需要将我们最终一定需要执行的语句放到finally段之内,保证资源的释放。


我们看到刚才的方法是用起来非常不方便,所以我们在Java 7中可以简化代码,我们使用了Try...With段,代码看起来简单多了,并且我们不用手动去释放资源了(注意这里释不需要手动释放的是文件句柄):

package com.freesoft.javaadvanced;

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

public class TestTryWith {
	public static void main(String[] args) throws IOException {
		try (FileReader filereader = new FileReader("Testa.txt");
				BufferedReader bufReader = new BufferedReader(filereader);) {
			String s;
			while((s = bufReader.readLine()) != null) {
				System.out.println(s);
			}
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}
	}
}


最后我们看看自定义的异常:

首先我们需要定义一个异常:

package com.freesoft.exception;

public class CustomException extends Exception {
	private static final long serialVersionUID = -2942598387157493698L;
}

之后我们开始编写测试代码:

package com.freesoft.javaadvanced;

import com.freesoft.exception.CustomException;

public class TestCustomException {
	public static void main(String[] args) {
		try {
			// if something happens
			throw new CustomException();
		} catch (CustomException e) {
			e.printStackTrace();
		}
	}
}




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值