Java异常处理

Java用try和catch程序块捕获并处理异常,还可以用throws子句声明并用throw语句抛出异常。

捕获异常

用try和catch语句。在try代码块中如果发生了异常,会在catch中匹配,可以有多个catch代码块,要按照类型稀有度排序,越稀有排在越前面,因为catch可以捕获子类的错误。在最后还可以选择是否需要finally代码块,一般finally用来释放资源。

抛出异常

throws用在方法声明中,表示这个方法可能会抛出异常。throw语句则抛出一个具体的异常对象。

自定义异常

除了java中预设的异常类型外,我们还可以自定义异常类型。自定义的异常类型必须是Throwable类的子类。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
//自定义错误类型ExceptionTest
package pac;
 
public class ExceptionTest extends Throwable{
	public ExceptionTest(String s) throws ExceptionTest{
		super(s);
	}
}
 
//JavaTest.java
import pac.ExceptionTest;
 
public class JavaTest{
	public static void main(String[] argvs){
		try{
			ExceptionTest e = new ExceptionTest("自定义错误类型");
			throw e;
		}
 
		catch(ExceptionTest e){
			System.out.println(e);
		}
		catch(Throwable e){
			System.out.println(e);
		}
		finally{
			System.out.println("finally");
		}
	}
}

断言assert

除了try-catch语句外,java中还可以使用assert技术来测试程序。

assert语法为assert(布尔表达式),如果布尔表达式为假值,程序就会在这里中断。assert和if的区别是,assert可以不执行。这样在开发时可以检测错误,而正式应用软件时跳过代码执行提高效率,并且不需要从写代码。默认情况下断言是禁用的,要执行的话需要用java -ea或java -enableassertions命令。

1
2
3
4
5
6
7
public class JavaTest{
	public static void main(String[] argvs){
		System.out.println("1");
		assert(1 == 0);
		System.out.println("2");
	}
}

Add a Comment

电子邮件地址不会被公开。 必填项已用*标注