很多时候我们都是被动的使用try...catch捕捉异常,因为java有些代码必须捕获异常或者抛出异常才可以运行。
但是很多时候try..catch可以帮我们解决很多问题。
比方说,我们需要访问一个接口,接口返回的数据为空时是一个string,有数据时返回一个json。但是我们不知道对方返回的数据什么时候为空,什么时候不为空。
但是我们可以在代码里面只当json处理,然后将这些代码用try..catch包裹起来,
--------如果不捕获异常
@Test
void testJSON(){
String s = "没有数据返回";
JSONObject jsonObject = JSON.parseObject(s);
System.out.println("继续执行后面的代码");
}
--------捕获异常
@Test
void testJSON(){
String s = "没有数据返回";
try{
JSONObject jsonObject = JSON.parseObject(s);
}catch (Exception e){
System.out.println("这不是一个json");
}
System.out.println("继续执行后面的代码");
}
如果不捕获异常,后面的代码将无法执行,这肯定是我们不希望看到的。
还有一个就是finally的使用,这个其实不是很常用,但是看个人需要。
@Test
void testJSON(){
String s = "{\"pageSize\":\"10\",\"page\":\"1\"}";
try{
JSONObject jsonObject = JSON.parseObject(s);
}catch (Exception e){
System.out.println("这不是一个json");
}finally {
System.out.println("都会执行");
}
System.out.println("继续执行后面的代码");
}
无论是否捕获到异常都会执行finally里面的代码块,这里就没有放出捕获到异常的情况了。可以自己尝试。
这只是举一个例子,实际应用场景还有很多。