assert 和try catch throw的区别
时间: 2023-07-12 07:01:23 浏览: 86
assert是C++中的一个宏,用于在程序运行时检查某个条件是否为真,如果为真,则程序继续执行;如果为假,则程序会立即终止并输出错误信息。assert主要用于程序调试阶段,一般在程序发布时会关闭assert。
try catch throw是C++中的异常处理机制,用于在程序运行时处理可能出现的错误情况。try语句块中包含可能抛出异常的代码,如果出现异常,则会跳转到catch语句块中进行处理。throw语句用于抛出异常,catch语句用于捕获异常并处理。
assert用于程序调试阶段,而异常处理机制用于程序运行阶段。assert只能检查某个条件是否为真,而异常处理机制可以处理各种异常情况。另外,assert可以被禁用,而异常处理机制不能被禁用。
相关问题
java try catch 单元测试
Java中的try-catch单元测试是一种用于测试异常情况的方法。通过在try块中执行可能引发异常的代码,并在catch块中捕获并处理该异常,可以确保代码在出现异常时能够正确处理。
在单元测试中,我们可以使用try-catch来测试是否正确抛出了预期的异常。可以使用JUnit提供的assert语句或者fail语句来验证代码是否触发了预期的异常。例如,在测试NumberFormatException时,可以使用以下代码:
@Test
public void testNumberFormatException(){
try{
Integer.parseInt(null);
fail("Should Throw Exception!");
}catch(NumberFormatException e){
//ok
}
}
上述代码中,我们在try块中调用了Integer.parseInt(null),这是一个会抛出NumberFormatException的情况。在catch块中,我们验证了是否成功捕获到了NumberFormatException异常。
除了使用try-catch来测试异常,还可以使用注解来声明预期的异常。例如,@Test(expected = NumberFormatException.class)可以用于声明预期的异常为NumberFormatException,如以下代码所示:
@Test(expected = NumberFormatException.class)
public void testNumberFormatException(){
Integer.parseInt(null);
}
上述代码中,如果Integer.parseInt(null)抛出了NumberFormatException异常,测试将被认为是通过的。
public static void setObjectMapper(ObjectMapper objectMapper) { Assert.notNull(objectMapper, "ObjectMapper should not be null"); JacksonTypeHandler.objectMapper = JsonUtils.getObjectMapper(); } @Override protected Object parse(String json) { try { if (StrUtil.isBlank(json)) { return null; } return objectMapper.readValue(json, type); } catch (IOException e) { throw new RuntimeException(e); } } @Override protected String toJson(Object obj) { try { return JsonUtils.objToJsonIgnoreNull(obj); } catch (JsonProcessingException e) { throw new RuntimeException(e); } catch (Exception e) { throw new RuntimeException(e); } }
这是JacksonTypeHandler类中的两个方法。setObjectMapper(ObjectMapper objectMapper)方法用于设置ObjectMapper对象。在该方法中,首先使用Assert.notNull()方法检查传入的objectMapper对象是否为空,然后将其赋值给类成员变量JacksonTypeHandler.objectMapper。
parse(String json)方法用于将JSON字符串转换为Java对象。该方法首先检查传入的json字符串是否为空,如果为空则返回null。然后使用Jackson库中的ObjectMapper对象的readValue()方法将json字符串转换为指定类型的Java对象,最后返回这个Java对象。
toJson(Object obj)方法用于将Java对象转换为JSON字符串。该方法首先使用JsonUtils.objToJsonIgnoreNull()方法将Java对象转换成JSON字符串,并忽略掉其中值为null的属性。如果转换过程中出现错误,就抛出RuntimeException异常。
阅读全文