java7 异常处理增强
在Java 7发行版中,oracle在异常处理机制上也做了一些不错的更改。这些主要是改进的catch块和多余的throws子句。让我们看看他们是如何改变的。
1.改进了Java 7中的catch块
在此功能中,现在您可以在单个catch块中捕获多个异常。在Java 7之前,您只能在每个catch块中仅捕获一个异常。
要指定期望的例外列表,使用竖线('|')字符。
Java程序可在单个catch块中捕获多个异常。
try
{
//Do some processing which throws NullPointerException;
throw new NullPointerException();
}
//You can catch multiple exception added after 'pipe' character
catch( NullPointerException npe | IndexOutOfBoundsException iobe )
{
throw ex;
}
如果一个
catch
块处理一个以上的异常类型,则该catch
参数是隐式的final
。在此示例中,catch
参数ex
为final
,因此您不能在catch
块内为其分配任何值。
2. Java 7中的冗余抛出子句
此功能使您免于在方法声明中使用throws子句。参见下面的示例:
public class MultipleExceptionsInCatchBlock {
public static void main(String[] args)
{
sampleMethod();
}
public static void sampleMethod()
//throws Throwable //No need to do this
{
try
{
//Do some processing which throws NullPointerException; I am sending directly
throw new NullPointerException();
}
//You can catch multiple exception added after 'pipe' character
catch(NullPointerException | IndexOutOfBoundsException ex)
{
throw ex;
}
//Now method sampleMethod() do not need to have 'throws' clause
catch(Throwable ex)
{
throw ex;
}
}
}
爱技术的程序员,在职上岸非全研究生;技术兴趣广泛:架构、java、python、nodejs、性能优化、工具、大数据、AI等技术分享!
标签:
java异常
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现