`

try/catch/finally

 
阅读更多
try
catch
finally

1、将预见可能引发异常的代码包含在try语句块中
2、如果发生了异常,则转入执行catch语句块中的代码。catch有三种写法:
        a) catch
            这将捕获任何发生的异常
        b) catch(Exception e)
            这将捕获任何发生的异常,并提供e参数,可以在处理异常时使用e参数获得异常信息
        c) catch(Exception的派生类 e)
            这将捕获派生类的异常,例如,我想捕获一个无效操作异常,可以如下写:
            catch(InvalidOperationException e) {
                ....
            }
        这样,如果try语句块中抛出的异常是InvalidOperationException,将转入该处执行,其他异常不处理。

        catch可以有多个,也可以没有,每个catch可以处理一个特定的异常。.net按照你catch的顺序查找异常处理块,如果找到,则进行处理,如果找不到,则向上一层次抛出。如果没有上一层次,则向用户抛出,此时,如果你在调试,程序将中断运行,如果是部署的程序,将会中止。    

        如果没有catch块,异常总是向上层(如果有)抛出,或者中断程序运行。
3、
    finally可以没有,也可以只有一个。无论有没有发生异常,它总会在这个异常处理结构的最后运行。即使你在try块内用return返回了,在返回前,finally总是要执行,这以便让你有机会能够在异常处理最后做一些清理工作。如关闭数据库连接等等。
    注意:如果没有catch语句块,那么finally块就是必须的。

    如果你不希望在这里处理异常,而当异常发生时提交到上层处理,但在这个地方无论是否发生异常,都要必须要执行一些操作,就可以使用try finally,
    很典型的应用就是进行数据库操作:
    用下面这个原语来说明:
try
{
    DataConnection.Open();
    DataCommand.ExecuteReader();
    ...
    return;
}
finally
{
    DataConnection.Close();
}

    无论是否抛出异常,也无论从什么地方return返回,finally语句块总是会执行,这样你有机会调用Close来关闭数据库连接(即使未打开或打开失败,关闭操作永远是可以执行的),以便于释放已经产生的连接,释放资源。
    顺便说明,return是可以放在try语句块中的。但不管在什么时机返回,在返回前,finally将会执行。

小结
    try { //执行的代码,其中可能有异常。一旦发现异常,则立即跳到catch执行。否则不会执行catch里面的内容 }
    catch { //除非try里面执行代码发生了异常,否则这里的代码不会执行 }
    finally { //不管什么情况都会执行,包括try catch 里面用了return ,可以理解为只要执行了try或者catch,就一定会执行 finally }     
分享到:
评论

相关推荐

    C++异常处理技巧try/catch/throw/finally/exception

    通过合理地使用`try`、`catch`、`throw`和`exception`等关键字,开发者不仅能够编写更加可靠的代码,还能显著提升程序的可维护性和可读性。 #### 二、C++标准异常处理 ##### 1. 构造和析构中的异常抛出 在C++中,...

    try 与 catch finally关键字

    Java的 try 与 catch finally关键字的使用

    使用try-catch-finally处理异常

    你还可以在`try-catch-finally`结构内部嵌套另一个`try-catch-finally`结构,以处理更复杂的情况。这种方式使得异常处理更加灵活,能够针对不同层次的异常进行分别处理。 6. **throw和throws关键字** `throw`...

    try-catch-finally捕获异常

    try-catch-finally捕获异常 try-catch-finally语句是Java语言中一种常用的异常处理机制,当程序在执行过程中出现异常时,可以使用try-catch-finally语句来捕获和处理异常。下面将详细介绍try-catch-finally语句的...

    try_catch_finally异常处理java

    本文将深入探讨Java中的`try-catch-finally`语句块,以及它们在异常处理中的作用。 首先,`try`块是异常处理的起点。在这个代码段中,我们通常会放置可能会抛出异常的代码。当Java执行到可能抛出异常的代码行时,...

    java try…catch嵌套捕获异常的实例

    在这个结构中,`try`块包含可能会抛出异常的代码,每个`catch`块分别捕获不同类型的异常,`finally`块则包含需要无论发生何种情况都必须执行的代码,如资源清理。 接下来,我们来探讨嵌套的`try-catch`块。当一个`...

    17.javatry…catch…finally语句.zip

    17.javatry…catch…finally语句.zip17.javatry…catch…finally语句.zip17.javatry…catch…finally语句.zip17.javatry…catch…finally语句.zip17.javatry…catch…finally语句.zip17.javatry…catch…finally语句...

    第07章 处理异常和错误1.pdf

    在C#语言中,异常处理主要依赖于三个关键字:`try`、`catch` 和 `finally`。 - **try 块**:`try` 后面紧跟的是需要执行的代码块,这段代码被称为 try 块。当 try 块中的代码执行时,如果出现了异常,则会立即停止...

    第07章 处理异常和错误.pdf

    在.NET Framework环境下,C#语言提供了强大的异常处理机制,主要通过try、catch和finally这三个关键字来实现。本章将深入探讨如何有效地处理异常和错误,以保证程序在遇到问题时能够优雅地恢复或终止。 首先,异常...

    222018321062005刘航1

    总结:在这个实验中,我利用了Java内置的异常类型InputMismatchException,并通过try/catch/finally结构进行异常检查,确保程序能正确处理不当的用户输入。 问题2: 解决方案:自定义一个异常类型...

    java try…catch捕获异常的实例

    即使在`try`或`catch`块中有`return`语句,`finally`块中的代码也会被执行: ```java try { // 代码 } catch (ExceptionType1 e1) { // 处理 } catch (ExceptionType2 e2) { // 处理 } finally { // 清理资源,...

    try、catch、finally、return 执行顺序.doc

    try、catch、finally、return 执行顺序详细讲解 try、catch、finally、return 执行顺序是 Java 编程语言中的一种 exception 处理机制,用于处理程序中的异常情况。下面我们来详细讲解 try、catch、finally、return ...

    try-catch的用法和含义

    ### try-catch 的用法与含义详解 在编程过程中,异常处理是确保程序稳定性和健壮性的关键环节之一。`try-catch` 结构作为异常处理的核心机制,在各种编程语言中广泛采用,如 Java、C# 和 JavaScript 等。本文将深入...

    Java机战游戏

    完成项目所用技术: 1、Swing窗体设计 Frame类的使用 Graphics类的使用 2、面向对象程序设计 使用封装的方式编写类 创建类和对象,使用类...使用try/catch/finally处理异常 使用异常类输出异常信息 开发工具:Eclipse

    java中try catch的用法

    // finally块总是会被执行,无论try-catch块中是否发生异常 // 通常用来释放资源等操作 } ``` #### 三、示例分析 根据题目提供的代码示例,我们来进行更深入的解析: ```java import java.io.*; public class ...

    try-catch用法

    3. **资源清理**:如果 `try` 块中使用了需要关闭的资源(如文件流),应使用 `finally` 块确保资源得到正确的释放。 4. **异常重新抛出**:在某些情况下,可能需要在捕获异常后进行一些处理,然后再重新抛出异常。...

    SpringOne2GX2010-GuillaumeLaforge.pdf

    Groovy 1.6版本带来了显著的编译时间和运行时性能提升,引入了多重赋值、if/else和try/catch/finally语句的可选返回值、Java 5注解定义、抽象语法树(AST)转换、Grape模块和依赖系统、与Swing相关的多种改进、JMX ...

    try-catch-finally-return-in-finally.rar_return

    标题 "try-catch-finally-return-in-finally.rar_return" 提到了 `try-catch-finally` 结构与 `return` 语句的交互,这涉及到程序执行流程的关键方面。 `try` 块是用来包含可能会抛出异常的代码。如果在 `try` 块中...

    java try…catch…finally捕获异常的实例

    `try-catch-finally`结构是Java提供的一种优雅的处理异常的方式,确保了程序在遇到错误时能正常运行并有机会清理资源。下面我们将详细讨论这个结构的工作原理和使用方法。 ### 1. `try` 块 `try`块是用来包含可能...

    基于Java异常处理机制的分析.pdf

    Java通过类来封装异常,并使用“try/ catch/finally”机制来处理异常,最后得到的代码更加“健壮”。 Java 异常处理机制的优点: 1. 异常处理的灵活性:Java的异常处理机制可以让开发人员更好地处理异常情况,...

Global site tag (gtag.js) - Google Analytics