醴陵小程序制作【醴陵企业邮箱】醴陵网站外包、醴陵微信商城开发、醴陵网店美工、醴陵淘宝设计-网站优化-网站建设【企业网站制作|网页设计】- 高端网站建设 - 书生商友信息科技-

全国热线:400-111-6878

网站建设推广专家

醴陵小程序制作【醴陵企业邮箱】醴陵网站外包、醴陵微信商城开发、醴陵网店美工、醴陵淘宝设计

发表日期: 2021-03-26 12:39:34 浏览次数:95

醴陵小程序制作【醴陵企业邮箱】醴陵网站外包、醴陵微信商城开发、醴陵网店美工、醴陵淘宝设计

醴陵市,为湖南省辖县级市,由株洲市代管,地处湖南省东部,总面积2156.46平方千米,醴陵市东邻江西省萍乡市湘东区、上栗县,北接浏阳市,西倚株洲市芦淞区、渌口区,南界攸县。截至2018年末,醴陵市辖19镇、4街道办事处、1个经济开发区、1个示范区,户籍人口105.3万。

醴陵市拥有渌江书院、宋名臣祠、醴泉古井、状元芳洲、文笔奇峰、云岩寺等名胜古迹。醴陵市境内浙赣复线横贯东西,醴(陵)茶(陵)线连通南北,距株洲站仅40千米,沪昆高铁、沪昆高速、106国道、320国道纵横交错,市区距长沙黄花国际机场90千米。 [1] 

2019年,醴陵市实现地区生产总值716.4亿元,实现财政总收入72.92亿元。 [2]  2020年度真抓实干成效明显,2021年1月29日被湖南省人民政府公布为推动高质量发展成效明显的县市区,给予100万元标准奖励。

14.3.3 try-catch语句嵌套

Java提供的try-catch语句嵌套是可以任意嵌套,修改14.3.2节示例代码如下:

//HelloWorld.java文件package com.a51work6;… …public class HelloWorld {

    public static void main(String[] args) {
        Date date = readDate();
        System.out.println("读取的日期  = " + date);
    }

    public static Date readDate() {

        FileInputStream readfile = null;
        InputStreamReader ir = null;
        BufferedReader in = null;
        try {
            readfile = new FileInputStream("readme.txt");
            ir = new InputStreamReader(readfile);
            in = new BufferedReader(ir);

            try {                                                  ①
                String str = in.readLine();                        ②
                if (str == null) {
                    return null;
                }

                DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
                Date date = df.parse(str);                         ③
                return date;

            } catch (ParseException e) {
                System.out.println("处理ParseException...");
                e.printStackTrace();
            }                                                      ④

        } catch (FileNotFoundException e) {                        ⑤
            System.out.println("处理FileNotFoundException...");
            e.printStackTrace();
        } catch (IOException e) {                                  ⑥
            System.out.println("处理IOException...");
            e.printStackTrace();
        }
        return null;
    }}复制代码

上述代码第①~④行是捕获ParseException异常try-catch语句,可见这个try-catch语句就是嵌套在捕获IOException和FileNotFoundException异常的try-catch语句中。

程序执行时内层如果会发生异常,首先由内层catch进行捕获,如果捕获不到,则由外层catch捕获。例如:代码第②行的readLine()方法可能发生IOException异常,该异常无法被内层catch捕获,最后被代码第⑥行的外层catch捕获。

注意 try-catch不仅可以嵌套在try代码块中,还可以嵌套在catch代码块或finally代码块,finally代码块后面会详细介绍。try-catch嵌套会使程序流程变的复杂,如果能用多catch捕获的异常,尽量不要使用try-catch嵌套。特别对于初学者不要简单地使用Eclipse的语法提示不加区分地添加try-catch嵌套,要梳理好程序的流程再考虑try-catch嵌套的必要性。

14.3.4 多重捕获

多catch代码块客观上提高了程序的健壮性,但是程序代码量大大增加。如果有些异常虽然种类不同,但捕获之后的处理是相同的,看如下代码。

try{
    //可能会发生异常的语句} catch (FileNotFoundException e) {
    //调用方法methodA处理} catch (IOException e) {
    //调用方法methodA处理} catch (ParseException e) {
    //调用方法methodA处理}复制代码

三个不同类型的异常,要求捕获之后的处理都是调用methodA方法。是否可以把这些异常合并处理,Java 7推出了多重捕获(multi-catch)技术,可以帮助解决此类问题,上述代码修改如下:

try{
    //可能会发生异常的语句} catch (IOException | ParseException e) {
    //调用方法methodA处理}复制代码

在catch中多重捕获异常用“|”运算符连接起来。

注意 有的读者会问什么不写成FileNotFoundException | IOException | ParseException 呢?这是因为由于FileNotFoundException属于IOException异常,IOException异常可以捕获它的所有子类异常了。

14.4 释放资源

有时在try-catch语句中会占用一些非Java资源,如:打开文件、网络连接、打开数据库连接和使用数据结果集等,这些资源并非Java资源,不能通过JVM的垃圾收集器回收,需要程序员释放。为了确保这些资源能够被释放可以使用finally代码块或Java 7之后提供自动资源管理(Automatic Resource Management)技术。

14.4.1 finally代码块

try-catch语句后面还可以跟有一个finally代码块,try-catch-finally语句语法如下:

try{
    //可能会生成异常语句} catch(Throwable e1){
    //处理异常e1} catch(Throwable e2){
    //处理异常e2} catch(Throwable eN){
    //处理异常eN} finally{
    //释放资源}复制代码

无论try正常结束还是catch异常结束都会执行finally代码块,如图14-2所示。

{%}

图14-2 finally代码块流程

使用finally代码块示例代码如下:

//HelloWorld.java文件package com.a51work6;… …public class HelloWorld {

    public static void main(String[] args) {
        Date date = readDate();
        System.out.println("读取的日期  = " + date);
    }

    public static Date readDate() {

        FileInputStream readfile = null;
        InputStreamReader ir = null;
        BufferedReader in = null;
        try {
            readfile = new FileInputStream("readme.txt");
            ir = new InputStreamReader(readfile);
            in = new BufferedReader(ir);
            // 读取文件中的一行数据
            String str = in.readLine();
            if (str == null) {
                return null;
            }

            DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
            Date date = df.parse(str);
            return date;

        } catch (FileNotFoundException e) {
            System.out.println("处理FileNotFoundException...");
            e.printStackTrace();
        } catch (IOException e) {
            System.out.println("处理IOException...");
            e.printStackTrace();
        } catch (ParseException e) {
            System.out.println("处理ParseException...");
            e.printStackTrace();
        } finally {                              ①
            try {
                if (readfile != null) {
                    readfile.close();            ②
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
            try {
                if (ir != null) {
                    ir.close();                  ③
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
            try {
                if (in != null) {
                    in.close();                  ④
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }                                        ⑤

        return null;
    }}复制代码

上述代码第①行~第⑤行是finally语句,在这里通过关闭流释放资源,FileInputStream、InputStreamReader和BufferedReader是三个输入流,它们都需要关闭,见代码第②行~第④行通过流的close()关闭流,但是流的close()方法还有可以能发生IOException异常,所以这里又针对每一个close()语句还需要进行捕获处理。

注意 为了代码简洁等目的,可能有的人会将finally代码中的多个嵌套的try-catch语句合并,例如将上述代码改成如下形式,将三个有可以发生异常的close()方法放到一个try-catch。读者自己考虑一下这处理是否稳妥呢?每一个close()方法对应关闭一个资源,如果第一个close()方法关闭时发生了异常,那么后面的两个也不会关闭,因此如下的程序代码是有缺陷的。

try {
    ... ...} catch (FileNotFoundException e) {
    ... ...} catch (IOException e) {
    ... ...} catch (ParseException e) {
    ... ...} finally {
    try {
        if (readfile != null) {
            readfile.close();
        }
        if (ir != null) {
            ir.close();
        }
        if (in != null) {
            in.close();
        }
    } catch (IOException e) {
        e.printStackTrace();
    }}


醴陵小程序制作醴陵企业邮箱醴陵网站外包、醴陵微信商城开发、醴陵网店美工、醴陵淘宝设计

上一条:醴陵网站优化【醴陵开通400电话】醴陵网站搭建、醴陵微信公众号推文外包、醴陵开通京东拼多多设计、醴陵淘宝装修
下一条:醴陵企业微信公众号小程序开发公司、醴陵企业网页设计方案、醴陵做网站开发价格、醴陵微信公众号制作运营报价明细表、醴陵网站设计公司费用、醴陵网站推广大概需要多少钱
网站制作
小程序制作
网站优化
网站开发
400电话办理
网络推广
网站建设
网店装修
微信公众号开发
网页设计
网络公司
域名企业邮箱
服务器空间
网站案例报价
百科问答
编辑排版美工
App软件开发
百度推广
代运营托管
logo设计
网络全网营销
网站备案
网站定制
小程序开发公司
首页
电话
立即预约