快精灵印艺坊 您身边的文印专家
广州名片 深圳名片 会员卡 贵宾卡 印刷 设计教程
产品展示 在线订购 会员中心 产品模板 设计指南 在线编辑
 首页 名片设计   CorelDRAW   Illustrator   AuotoCAD   Painter   其他软件   Photoshop   Fireworks   Flash  

 » 彩色名片
 » PVC卡
 » 彩色磁性卡
 » 彩页/画册
 » 个性印务
 » 彩色不干胶
 » 明信片
   » 明信片
   » 彩色书签
   » 门挂
 » 其他产品与服务
   » 创业锦囊
   » 办公用品
     » 信封、信纸
     » 便签纸、斜面纸砖
     » 无碳复印纸
   » 海报
   » 大篇幅印刷
     » KT板
     » 海报
     » 横幅

Java非常处理--尽量不要从try区段中返回(return)

Java非常处理模型与其他语言相比,要害词finally是最精彩的新增特性了。finally构件使得该区段中的代码总是得以执行,而无论是否发生非常,特殊适用于维护对象的内部状态(用来保证非常发生恢复对象的有效状态,以确保程序能在处理完非常后自动再次投入运行)和清理non-memory资源(垃圾回收机制无法处理的资源,如数据库连接、Socket等等)。

        但有一点值得注重,那就是尽量不要从try区段中返回(调用return),因为只要有finally区段存在,它就一定会被执行,那么假如你在finally区段中又调用了一次return语句,则try区段中的返回值将会被遮掩,使得方式调用者得到的是finally区段中的返回值--这经常又与程序编写的初衷相背。

举个简朴的例子:

class FinallyTest
{
    public int mothodA()
    {
        try {
            return 10;
        }finally {
            return 20;
        }
    }
    public static void main(String[] args) {
        FinallyTest ft=new FinallyTest();
        int x= ft.mothodA();
        System.out.println(\"the value of x is: \"+x);
    }
}
运行上边的代码,我们发现得到的返回值是finally区段中的20,而不是try区段中的10。

        程序员传统上总是以为当他们执行return语句的时候,会马上离开执行中的函数,返回到方式调用端。但是在Java语言中,一旦finally区段出现,这种观点便不再是金科玉律了。--《Practical Java》
        为了绕开这个潜在的陷阱,我们需要尽量不在try区段中调用return break或continue语句,它们都有可能使程序进入finall区段。假如无法避免,那么我们一定要确保finally区段的代码不会影响函数的返回值。





返回类别: 教程
上一教程: JAVA相关基础知识(1)
下一教程: JAVA数据结构示例---逆波兰式求值!

您可以阅读与"Java非常处理--尽量不要从try区段中返回(return)"相关的教程:
· Java非常处理--不要忽略或遮掩非常
· 突破Java非常处理规则
· Java非常处理的陋习展播
· 关于java非常处理机制的深入理解
· JAVA对JPEG图片进行处理
    微笑服务 优质保证 索取样品