【Java基础】[异常处理]try,catch,finally

简介: 【Java基础】[异常处理]try,catch,finally

一、什么是异常处理?


我们做的程序需要有健壮性,即,程序在运行时能够不出或者少出问题。但是,在程序的实际运行时,总会有一些因素导致程序不能正常运行。


  异常处理(ExceptionHandling)就是一种解决这一问题的机制,当程序运行出现意外情形时,系统会自动生成一个Exception对象来通知程序,从而实现将“业务功能实现代码”和“错误处理代码”分离,提供更好的可读性。


二、使用if…else做异常处理


if(一切正常){


    //业务实现代码…


     }


     else{


           alert 输入不合法


           goto retry


     }


  但是“一切正常”是很抽象的,无法转换成计算机可识别的代码,于是,出现:如果程序可以顺序完成,则“一切正常”。把系统的业务实现代码放在try块中定义,所有的异常处理逻辑放在catch块中处理。


  常见语法结构:


  try{


       //业务实现代码…


}


  catch(Exception e){


     alert 输入不合法


  goto retry


      }


三、关于try catch finally    

如果执行try块的业务逻辑代码出现异常,系统会自动生成一个异常对象,该异常对象被提交给Java运行时环境,称为抛出(throw)异常。


   Java运行时环境收到异常对象,会寻找处理改异常对象的catch块,如果找到合适的catch块,则把该异常对象交给catch块处理,称为捕获(catch)异常;如果找不到捕获异常的catch块,则运行时环境终止,Java程序也将退出。


   有时,程序在try块中打开了一些物理资源(数据库连接,网络连接,磁盘文件等)这些物理资源需要被显式回收。那么,在哪里回收呢?


   在Java的垃圾回收机制?NO,Java的垃圾回收机制只能回收堆内存中对象所占内存。


   在try块中回收?NO,当某语句执行时出现异常,该语句后面的其他语句不会获得执行机会,则该语句之后的资源得不到回收语句的执行,不能被回收。


   在catch块中回收?NO,catch块完全有可能得不到执行,物理资源仍可能不能及时被回收。


   所以,finally出现了~总会被执行!


   finally块位于所有的catch块后,无论try块是否出现异常, catch块是否被执行,或try,catch块中执行了return语句,finally都会被执行!


   


try{


      //业务实现代码…


}


catch(Exception e){


    //异常处理块1


      }


Catch(Exception e){


     //异常处理块2


    }


        finally{


            //资源回收块


        }


 


四、当异常处理遇到return


通常情况下,一旦在方法里执行到return语句的地方,程序将立即结束该方法,但在异常处理中,仍会先执行完finally块中的代码,才会执行try ,catch中的return语句。所以,尽量不要在finally块中使用return或throw等导致方法终止的语句,一旦使用,将会导致try块,catch块中的return、throw语句失效,得不到执行。


   以上是对异常处理中try块,catch块,finally块的简单的介绍,在后面的博客中,会加入本人更深入的理解,敬请期待。




















相关文章
|
2天前
|
Java 数据库连接
深入理解Java异常处理机制
【4月更文挑战第24天】本文将探讨Java中的异常处理机制,包括异常的概念、分类、捕获和抛出等方面。通过深入了解异常处理机制,可以帮助我们编写更加健壮的程序,提高代码的可读性和可维护性。
|
2天前
|
Java 编译器 程序员
【Java基础】细说异常处理
【Java基础】细说异常处理
6 0
|
19天前
|
Java
Java中的throw和throws:异常处理详解
Java中的throw和throws:异常处理详解
21 0
|
26天前
|
Java 程序员 开发者
深入理解Java异常处理机制
在Java编程中,异常处理是确保程序健壮性与稳定性的重要组成部分。本文旨在深度剖析Java异常处理机制的核心概念、结构及其实际应用策略,帮助开发者更好地理解并运用异常处理来优化程序设计。我们将从Java异常体系结构入手,探讨try-catch-finally语句块的执行流程,分析自定义异常的必要性与实现方式,并通过实例演示如何有效地管理和处理异常情况。
23 3
|
1月前
|
Java 程序员 API
Java中的异常处理:理解、实践与最佳实践
在Java编程中,异常处理是一个重要的概念。本文将深入探讨Java中的异常处理,包括其基本概念、如何在实践中应用,以及一些最佳实践。我们将通过实例和代码片段来解析这些概念,以帮助读者更好地理解和应用Java的异常处理。
10 0
|
Java
Java趣味分享:try/finally
​ 考虑以下四个测试方法,它们会输出什么? public class Test { public static void main(String[] args) { System.
804 0
|
4天前
|
安全 Java 调度
Java线程:深入理解与实战应用
Java线程:深入理解与实战应用
23 0
|
1天前
|
消息中间件 缓存 NoSQL
Java多线程实战-CompletableFuture异步编程优化查询接口响应速度
Java多线程实战-CompletableFuture异步编程优化查询接口响应速度
|
1天前
|
数据采集 存储 Java
高德地图爬虫实践:Java多线程并发处理策略
高德地图爬虫实践:Java多线程并发处理策略
|
2天前
|
缓存 Java
【Java基础】简说多线程(上)
【Java基础】简说多线程(上)
6 0