`
spring0303
  • 浏览: 26870 次
  • 来自: ...
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

异常处理与函数返回

阅读更多
java 代码

 

  1. public class Mine {   
  2.   
  3. public static void main(String[] args) {    
  4.   
  5. Mine mine = new Mine();   
  6.   
  7. System.out.println(mine.aMethod());   
  8.   
  9. }   
  10.   
  11. public int aMethod() {   
  12.   
  13. try{   
  14.   
  15. FileInputStream fis = new FileInputStream("hello.txt");   
  16.   
  17. }catch(Exception ex) {   
  18.   
  19. System.out.println("File Not Found !"); //位置1    
  20. return -1//位置2    
  21.   
  22. }finally {    
  23. System.out.println("Doing finally !");//位置3    
  24. }    
  25. return 1;    
  26. }   
  27.   
  28. }   
  29.   

当文件不存在时,运行结果为:
File Not Found !
Doing finally !
-1

当文件存在时,运行结果为:
Doing finally !
1

这样的结果,有意外么? 有!

* 首先看捕获异常的情况:
在位置1执行后,没有执行位置2,而是先在执行了位置3,再回来执行位置2,是否可以这样总结: 在 catch 块遇到 return 时,会先查找 finally 块并执行,然后再返回 catch 块执行return.

* 再看没有异常的情况:
finally 块还是在 return 前被执行了, 是否可以这样总结: 只要函数体中有 finally 块, 它就一定会执行; 如果函数有 return , 那么finally也一定在 return 前执行.

分享到:
评论

相关推荐

    c/vc++/MFC异常处理/结构化异常处理 浅析

    C语言本身并不直接支持异常处理,但可以通过返回错误码或者设置全局变量的方式进行错误处理。这种方式称为“传统错误处理”。然而,这种方法往往导致代码难以维护,因为错误处理分散在各个函数中,没有统一的机制。...

    易语言线程结构异常处理

    为防止这种情况,开发者可以设置异常处理函数,当检测到除0操作时,可以选择抛出错误信息、返回默认值,或者让程序优雅地恢复执行。 "十到十六,到十六进制文本"这部分可能指的是易语言中将十进制数值转换为十六进制...

    Windows下的异常处理

    2. 查找异常处理程序:处理器会沿着调用堆栈向上查找异常处理程序(通常是一个函数),该程序负责处理异常。 3. 异常过滤器:在找到异常处理程序后,会执行异常过滤器代码,该代码可以决定如何处理异常。过滤器可能...

    设计一个函数返回传入的列表中最大和第二大的元素的值。

    如果`num_list`长度小于2,说明列表中没有足够的元素来找到第二大的值,函数返回当前的最大值和None。否则,对`num_list`进行降序排序,然后返回前两个元素,即最大值和第二大的值。 现在让我们看看如何使用这个...

    setjump与longjmp(异常处理机制)

    setjmp与longjmp(异常处理机制) setjmp 和 longjmp 是 C 语言标准库中的两个函数,用于实现异常处理机制。它们提供了一种非本地局部跳转("non-local goto")机制,能够在程序中实现错误处理模块的调用和返回。 ...

    使用纯C语言实现异常处理

    5. **清理与恢复**:在异常处理函数中,执行必要的清理工作,比如释放资源、关闭文件等,然后决定是继续执行还是终止程序。 以下是一个简单的示例代码: ```c #include #include #include typedef struct { ...

    Python异常处理函数和模块PPT学习教案.pptx

    总的来说,掌握Python的异常处理、函数定义与使用,以及模块和包的管理,是编写健壮、可维护的Python代码的基础。理解并熟练运用这些概念,能帮助开发者创建出高效、稳定的程序,同时提高代码的可读性和可复用性。

    vC 堆栈 异常处理

    在vC++环境中,异常处理机制与标准C++略有不同,因为它集成了Windows API,这使得vC++的异常处理具有了更多与平台相关的特性。例如,vC++支持结构化异常处理(Structured Exception Handling, SEM),这是Windows...

    深入研究win32结构化异常处理.doc

    当一个线程遇到异常时,Windows操作系统会调用预先注册的异常处理程序(称为异常处理链),这是一个由多个异常处理回调函数组成的序列。这些回调函数的原型为 `EXCEPTION_DISPOSITION __cdecl _except_handler`,...

    模板与异常处理.

    3. 异常处理:在C++中,异常处理是通过`try`,`catch`,和`throw`关键字来实现的。它允许程序在遇到错误或异常情况时优雅地处理问题,而不是导致程序崩溃。虽然这个实验没有直接涉及异常处理,但它是面向对象程序...

    python封装的异常值处理函数(包括箱线图去除异常值等)

    这个封装的异常值处理函数对于数据预处理非常实用,可以方便地集成到数据分析工作流中,确保模型训练基于更可靠的数据。在实际应用时,需根据具体需求调整 `scale` 参数,以达到理想的异常值处理效果。

    python异常处、函数、匿名函数、面向对象.zip

    在Python中,异常处理、函数、匿名函数(lambda函数)以及面向对象编程是四个核心概念,它们构成了Python编程的基础框架。 1. 异常处理:在编程中,错误是不可避免的。Python通过异常处理机制来捕获和处理这些错误...

    ARMv8 Linux内核异常处理分析

    异常处理函数在C语言层面完成后,需要执行kernel_exit来返回到异常发生点继续执行。在kernel_exit时,内核会将保存在栈上的异常处理前的状态恢复,然后通过一系列指令来完成栈的清理工作,最终恢复到异常发生时的栈...

    C/C++异常处理方法总汇

    本文将深入探讨C/C++中的异常处理机制,包括传统的错误处理方法与现代的异常处理机制,并分析其优缺点。 #### 传统错误处理方法 在C/C++中,传统的错误处理方式通常是通过函数返回值来传递错误信息。例如,`printf...

    可嵌套的C语言异常处理机制

    在C语言中,异常处理通常不被直接支持,因为C语言的设计更偏向于低级编程,强调控制细节和效率。然而,随着软件复杂性的增加,对异常处理的需求也在增长。为了实现可嵌套的C语言异常处理机制,开发者通常会采用...

    c++异常处理

    - 有效C++(More Effective C++)中的条款指出,应使用构造函数防止资源泄漏(#10),禁止异常信息传递到析构函数外(#11),通过引用捕获异常(#13),谨慎使用异常规格(#14),了解异常处理开销(#15),限制...

    C与C++中的异常处理

    《C与C++中的异常处理》一书深入探讨了异常处理这一关键概念,尤其是在C++这一面向对象的编程语言中的应用。作者Robert Schmidt通过无情译者的翻译,将复杂的概念分解成易于理解的部分,覆盖了从异常的基础到高级...

    SafePHP重写一组核心PHP函数以抛出异常而不是在遇到错误时返回false

    当一个异常被触发时,程序会停止当前的操作,转而执行异常处理机制。在PHP中,我们可以使用`try-catch`结构来捕获和处理异常。通过抛出异常,我们可以在遇到问题时立即停止程序,避免潜在的未定义行为和数据损坏。 ...

    关于WinCC自定义返回数组函数书写规则正确写法.rar

    - 函数的错误处理机制,例如返回错误代码或抛出异常。 6. **调试与测试**: - 编译并链接DLL后,将其复制到WinCC运行时的系统目录或指定的DLL路径下。 - 在WinCC中调试用户定义的函数模块,确保DLL函数被正确...

Global site tag (gtag.js) - Google Analytics