首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

java异常处理(学习笔记)

多个catch块后还可以跟一个finally块,finally块用于回收在try块里打开的物理资源,异常机制会保证finally块总被执行。...当java运行时环境接收到异常对象后,会依次判断该异常对象是否是catch块后异常类或其子类的实例,如果是,java运行时环境将调用该catch块来处理该异常,否则再次拿该异常对象和下一个catch块里的异常类做比较...如果在catch块中进行资源回收,但catch块中的语句完全有可能不执行,这些都导致无法正常回收物理资源。 为了保证一定能回收try块中打开的物理资源,异常处理机制提供了finally块。...,try语句在该语句结束时自动关闭这些资源。...如果程序需要,自动关闭资源的try语句后也可以带多个catch块和一个finally块。

65411

基础篇:深入解析JAVA异常

方法中发生异常,会创建一个异常对象交给JVM处理,该异常对象包含异常名称,异常描述以及异常发生时应用程序的状态。创建异常对象并交给JVM的过程称为抛出异常。...主要用于回收在try代码块里打开的资源(如数据库连接、TCP连接和文件流) throw 用于抛出异常 throws 声明该方法可能抛出的异常 注意: 执行try、catch或其他地方的return、throw...如果在finally中有return、throw语句,则在执行finally里的return或throw语句后,方法结束 public int hello(String fileName) throws...为了防止异常发生而导致资源没被关闭,所以资源的关闭,都需要放在finally代码块里执行 有没有方便的方式呢?...在1.7 JDK后,java提供了try--with--resource语法糖,资源对象需要实现AutoCloseable,在try()里打开资源,相关资源就会自动关闭,不再需要手动执行,不管是正常退出或异常退出

37910
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    10 Java 异常

    异常指的是程序运行时出现的不正常情况。程序运行过程中难免会发生异常,发生异常并不可怕,程序员应该考虑到有可能发生这些异常,编程时应能正确的处理异常,使成为健壮的程序。...从未检异常中恢复,虽说不是不可能,但往往很难,因为完全不可预知。运行时异常往往是程序员所犯错误导致的,健壮的程序不应该发生运行时异常。...释放资源 有时在 try-catch 语句中会占用一些非 Java 资源,如:打开文件、网络连接、打开数据库连接和使用数据结果集等,这些资源并非 Java 资源,不能通过 JVM 的垃圾收集器回收,需要程序员释放...每一个close()方法对应关闭一个资源,如果某一个 close() 方法关闭时发生了异常,那么后面的也不会关闭,因此这种代码是有缺陷的。...但是本方法没有能力处理该异常,捕获它没有任何意义,则需要在方法后面声明抛出该异常,通知上层调用者该方法有可以发生异常。 注意:如果声明抛出的多个异常类之间有父子关系,可以只声明抛出父类。

    81030

    充电篇:Java异常面试题整理大全

    对 Checked 异常处理方法有两种: 当前方法知道如何处理该异常,则用 try...catch 块来处理该异常。 当前方法不知道如何处理,则在定义该方法是声明抛出该异常。...finally:异常处理语句try-catch的一部分,一般将一定要执行的代码放在finally代码块中,总是被执行,一般用来存放一些关闭资源的操作。...finalize:Object 类的一个方法,在垃圾回收器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。...如果在try... catch 部台用Connection 对象连接了数据库,而且在后继部台不会再用到这个连接对象,那么一定要在 finally从句中关闭该连接对象, 否则i亥连接对象所占用的内存资源无法被回收...如果在try... catch 部分用到了一些IO对象进行了读写操作,那么也一定要在finally 中关闭这些IO对象,否则,IO对象所占用的内存资源无法被回收。

    27610

    《面试季》经典面试题-异常篇(一)

    2、运行时错误: 它指的是程序运行时,运行环境发现程序不合理而抛出的错误,它主要是开发考虑不够细致导致,这种错误只能依靠异常机制来进行处理,而且能否预防程序在运行时出现错误也是一个开发者是否考虑周全,经验是否丰富的考察标准...运行时异常: 这类异常编译器是无法检测的,一般是有程序的逻辑错误引起的,在程序中可以通过异常捕获机制来进行处理,处理这类异常主要看开发者是否考虑全面,开发经验是否丰富可以提前预测代码可能出现异常,常见的有...2. finally:通常放在try…catch…的后面构造总是执行代码块,这就意味着程序无论正常执行还是发生异常,这里的代码只要JVM不关闭都能执行,可以将释放外部资源的代码写在finally块中。...try-finally结构主要是为了捕获异常时正确释放资源或者关闭流 try-catch-finally结构主要是为了处理既要捕获异常处理异常,也要在出现异常时关闭流和释放对应资源的场景 五: NoClassDefFoundError...追问2、try-catch-finally结构中,如果在catch中return了,finally中的代码是否还会被执行?

    33410

    【Java 基础篇】Java 异常处理详解

    在 finally 块中,我们确保文件资源被正确地关闭。 2、非受检异常(Unchecked Exception) 非受检异常是指在编译 阶段不需要处理的异常,也称为运行时异常。...非受检异常不需要显式地捕获或声明抛出,开发人员可以根据需要选择是否进行捕获和处理。如果不进行处理,异常将在运行时抛出,并且可能导致程序的崩溃。...在 try 块中,我们放置可能抛出异常的代码。如果在 try 块中发生了异常,控制流将跳转到 catch 块,并执行相应的异常处理代码。...无论是否抛出异常,finally 块中的代码都会被执行。通常,我们在 finally 块中释放资源、关闭连接等。...及时释放资源:在 finally 块中释放资源,确保资源在使用完毕后被正确地关闭或释放。 避免空的 catch 块:避免使用空的 catch 块,这样会隐藏异常并导致难以调试和定位问题。

    49140

    Java 中的 `try-catch-finally` 与 `try-with-resource`

    代码块放在try块中,如果在执行该块时抛出了异常,就会跳转到catch块中进行异常处理。finally块中的代码始终都会被执行,无论是否有异常发生。...在finally块中,您可以指定要在代码执行完毕后执行的代码。这通常用于释放资源,例如关闭文件或网络连接等。无论代码是否抛出异常,finally块中的代码都会得到执行。 尽量使用局部变量。...它们在try块中声明和初始化,并在代码块结束后自动关闭。如果发生异常,程序将跳转到相应的catch块进行异常处理,并且在那之前,资源会被自动关闭。...try块中的代码在执行完毕后,无论是否发生异常,都会自动关闭这些资源。 catch块:catch块用于捕获并处理try块中抛出的异常。...异常处理:如果在try块中的代码抛出异常,try-with-resources会自动关闭已声明的资源,然后抛出最后一个异常。可以使用catch块捕获和处理该异常,或者将异常继续传递给上层调用者。

    8610

    Python - Context Manager 上下文管理器

    代码块执行之前执行 如果 with 语句有 as 子句,且该方法有返回值,那么该方法的返回值会被赋值给 as 子句后的变量,最常见的 with open('file_path', 'w') as file...代码块成功执行结束,程序自动调用该方法,且三个参数都为 None 如果 with ... as ......0x10e203200>) 抛出了 Exception 遇到异常时关闭资源 Traceback...with 代码块是否有异常,最终都会自动调用 __exit__() 方法 当抛出异常时,__exit__() 默认返回 None,会重新抛出异常到外面,让 with ... as ......,生成器暂停执行,返回文件资源对象并赋值给 file 当 with 语句执行完后,生成器继续执行剩余代码,关闭文件,释放资源 总结 基于生成器的上下文管理器时,不再用定义 __enter__() 和 _

    90220

    Python “异常处理机制” ——Python面试100道实战题目练习,巩固知识、检查技术、成功就业

    捕获异常 B. 管理资源,如文件或网络连接 C. 定义上下文管理器 D. 替代try…finally结构 题22:下列哪个表达式可以正确地打开一个文件并立即使用with语句关闭它?...题目17: 在Python中,可以使用with语句来自动管理资源,如文件操作,它会在代码块执行完毕后自动关闭文件,无论是否发生异常。...题13: 如果在try块中引发了异常,但没有找到匹配的except块,那么该异常会向上层调用者传播。...with open(file_path, ‘r’) as file:语句使用上下文管理器打开文件,确保文件在操作完成后自动关闭。 读取文件内容并打印。...捕获sqlite3.Error异常,该异常是sqlite3库抛出的所有数据库相关异常的基类。 在finally块中,确保数据库连接被关闭,无论是否发生异常。

    8110

    Java异常处理扫盲贴

    这些异常一般是由程序逻辑错误引起的,程序应该从逻辑角度尽可能避免这类异常的发生;而RuntimeException之外的异常我们统称为非运行时异常,类型上属于Exception类及其子类,从程序语法角度讲是必须进行处理的异常...检查异常vs不受检查异常 检查异常:在正确的程序运行过程中,很容易出现的、情理可容的异常状况,在一定程度上这种异常的发生是可以预测的,并且一旦发生该种异常,就必须采取某种方式进行处理。...它主要用于回收在try块里打开的物力资源(如数据库连接、网络连接和磁盘文件)。...throw:用于抛出异常。 throws:用在方法签名中,用于声明该方法可能抛出的异常。...需要关闭的连接等资源时,相比finally,更推荐使用Java 7中添加的try-with-resources语句,因为通常Java平台能够更好地处理异常情况,编码量也要少很多。

    51831

    Java 异常处理的 20 个最佳实践,你知道几个?

    如果在 finally 块中调用的代码可能会引发异常,请确保要么处理它,要么将其记录下来。永远不要让它从 finally 块中抛出来。...在异常处理后清理资源 如果你正在使用数据库连接或网络连接等资源,请确保清除它们。如果你正在调用的 API 仅使用非检查性异常,则仍应使用 try-finally 块来清理资源。...在 try 模块里面访问资源,在 finally 里面最后关闭资源。即使在访问资源时发生任何异常,资源也会优雅地关闭。 只抛出和方法相关的异常 相关性对于保持应用程序清洁非常重要。...NoSuchFileFoundException 则对该方法的用户更有用。 切勿在程序中使用异常来进行流程控制 不要在项目中出现使用异常来处理应用程序逻辑。永远不要这样做,它会使代码很难阅读和理解。...把用 JavaDoc 记录运行时可能抛出的所有异常作为一种习惯,其中也尽量包括用户应该遵循的操作,以防这些异常发生。

    82620

    【148期】最最最全面的Java异常面试及解答

    它主要用于回收在try块里打开的物力资源(如数据库连接、网络连接和磁盘文件)。...finally一般作用在try-catch代码块中,在处理异常的时候,通常我们将一定要执行的代码方法finally代码块中,表示不管是否出现异常,该代码块都会执行,一般用来存放一些关闭资源的代码。...不管 try 代码块成功执行之后还是你在 catch 代码块中处理完异常后都会执行。因此,你可以确保你清理了所有打开的资源。...大多数的 Java 标准资源都继承了这个接口。当你在 try 子句中打开资源,资源会在 try 代码块执行后或异常处理后自动关闭。...【强制】有try块放到了事务代码中,catch异常后,如果需要回滚事务,一定要注意手动回滚事务。 【强制】finally块必须对资源对象、流对象进行关闭,有异常也要做try-catch。

    58320

    JAVA知识基础(十一):异常

    (抛出异常). 4.3捕获异常try…catch 如果异常出现的话,会立刻终止程序,所以我们得处理异常: 该方法不处理,而是声明抛出,由该方法的调用者来处理(throws)。...4.4 finally 代码块 finally:有一些特定的代码无论异常是否发生,都需要执行。另外,因为异常会引发程序跳转,导致有些语句执行不到。...当我们在try语句块中打开了一些物理资源(磁盘文件/网络连接/数据库连接等),我们都得在使用完之后,最终关闭打开的资源。...finally的语法: try…catch…finally:自身需要处理异常,最终还得关闭资源。 注意:finally不能单独使用。...比如在IO流中,当打开了一个关联文件的资源,最后程序不管结果如何,都需要把这个资源关闭掉。

    34740

    Python with as用法详解

    任何一门编程语言中,文件的输入输出、数据库的连接断开等,都是很常见的资源管理操作。...但资源都是有限的,在写程序时,必须保证这些资源在使用过后得到释放,不然就容易造成资源泄露,轻者使得系统处理缓慢,严重时会使系统崩溃。...例如,前面在介绍文件操作时,一直强调打开的文件最后一定要关闭,否则会程序的运行造成意想不到的隐患。...但是,即便使用 close() 做好了关闭文件的操作,如果在打开文件或文件操作过程中抛出了异常,还是无法及时关闭文件。 为了更好地避免此类问题,不同的编程语言都引入了不同的机制。...例如,使用 with as 操作已经打开的文件对象(本身就是上下文管理器),无论期间是否抛出异常,都能保证 with as 语句执行完毕后自动关闭已经打开的文件。

    97810

    Java异常面试问题

    如果未找到处理程序,则应用程序将异常抛出到运行时环境,JRE将终止该程序。 Java异常处理框架仅用于处理运行时错误,编译时错误不由异常处理框架处理。 2. Java中的异常处理关键字是什么?...java异常处理中使用了四个关键字。 throw:有时我们明确要创建异常对象然后抛出它来停止程序的正常处理。throw关键字用于向运行时抛出异常来处理它。...throws:当我们在方法中抛出任何已检查的异常而不处理它时,我们需要在方法签名中使用throws关键字让调用者程序知道该方法可能抛出的异常。...由于异常会暂停执行过程,因此我们可能会打开一些不会关闭的资源,因此我们可以使用finally块。finally块总是被执行,无论是否发生异常。 3. 解释Java异常层次结构?...,有时我们忘记关闭它们并在资源耗尽时获得运行时异常。

    1K30

    Java基础系列6:深入理解Java异常体系

    多个catch块后还可以跟一个finally块,finally块用于回收在try块里打开的物理资源(如数据库连接、网络连接和磁盘文件)。...当Java运行时决定调用某个catch块来处理该异常对象时,会将异常对象赋给catch块后的异常参数,程序即可通过该参数来获得异常的相关信息。...5、使用finally回收资源: 有些时候,程序在try块里打开了一些物理资源(例如数据库连接、网络连接和磁盘文件),这些物理资源都必须显示回收。 在哪里回收这些物理资源呢?在try块里回收?...假设程序在try块里进行资源回收,根据图10.1所示的异常捕获流程—一如果try块的某条语句引起了异常,该语句后的其他语句通常不会获得执行的机会,这将导致位于该语句之后的资源回收语句得不到执行。...如果在catch块里进行资源回收,但catch块完全有可能得不到执行,这将导致不能及时回收这些物理资源。 为了保证一定能回收try块中打开的物理资源,异常处理机制提供了finally块。

    58430

    Java异常面试题(2020最新版)

    它主要用于回收在try块里打开的物力资源(如数据库连接、网络连接和磁盘文件)。...finally一般作用在try-catch代码块中,在处理异常的时候,通常我们将一定要执行的代码方法finally代码块中,表示不管是否出现异常,该代码块都会执行,一般用来存放一些关闭资源的代码。...不管 try 代码块成功执行之后还是你在 catch 代码块中处理完异常后都会执行。因此,你可以确保你清理了所有打开的资源。 ...大多数的 Java 标准资源都继承了这个接口。当你在 try 子句中打开资源,资源会在 try 代码块执行后或异常处理后自动关闭。 ...【强制】有try块放到了事务代码中,catch异常后,如果需要回滚事务,一定要注意手动回滚事务。  【强制】finally块必须对资源对象、流对象进行关闭,有异常也要做try-catch。

    79530

    干货分享|Java异常经典14问,你都能答对吗?

    如果未找到处理程序,则应用程序将异常抛出到运行时环境,JRE将终止该程序。 Java异常处理框架仅用于处理运行时错误,编译时错误不由异常处理框架处理。 2、Java中的异常处理关键字是什么?...java异常处理中使用了四个关键字。 throw:有时我们明确要创建异常对象然后抛出它来停止程序的正常处理。throw关键字用于向运行时抛出异常来处理它。...throws:当我们在方法中抛出任何已检查的异常而不处理它时,我们需要在方法签名中使用throws关键字让调用者程序知道该方法可能抛出的异常。...由于异常会暂停执行过程,因此我们可能会打开一些不会关闭的资源,因此我们可以使用finally块。finally块总是被执行,无论是否发生异常。 3、解释Java异常层次结构?...,有时我们忘记关闭它们并在资源耗尽时获得运行时异常。

    90820

    JAVA异常处理实战心得

    checked exceptions意味着不在程序的即时控制内的错误场景。它们通常与外部资源/网络资源交互,例如数据库问题、网络连接错误、丢失文件等。...由于运行时异常及其子类的不可查性,为了更合理、更容易地实现应用程序,Java规定,运行时异常将由Java运行时系统自动抛出,允许应用程序忽略运行时异常。...无论是否发生异常,finally 代码块中的代码总会被执行。在 finally 代码块中,可以运行清理类型等收尾善后性质的语句。比如关闭数据库连接、断开网络连接和关闭磁盘文件等。...一旦执行到throw语句,说明肯定要抛出异常,程序执行完throw语句之后立即停止;throw后面的任何语句不被执行,最邻近的try块用来检查它是否含有一个与异常类型匹配的catch语句。...2)如果return的数据是引用数据类型,而在finally中对该引用数据类型的属性值的改变起作用,try中的return语句返回的就是在finally中改变后的该属性的值。

    55520
    领券