发表日期: 2021-03-26 12:40:26 浏览次数:135
醴陵企业微信公众号小程序开发公司、醴陵企业网页设计方案、醴陵做网站开发价格、醴陵微信公众号制作运营报价明细表、醴陵网站设计公司费用、醴陵网站推广大概需要多少钱
醴陵市,为湖南省辖县级市,由株洲市代管,地处湖南省东部,总面积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.4.1节使用finally代码块释放资源会导致程序代码大量增加,一个finally代码块往往比正常执行的程序还要多。在Java 7之后提供自动资源管理(Automatic Resource Management)技术,可以替代finally代码块,优化代码结构,提高程序可读性。
自动资源管理是在try语句上的扩展,语法如下:
try (声明或初始化资源语句) {
//可能会生成异常语句} catch(Throwable e1){
//处理异常e1} catch(Throwable e2){
//处理异常e1} catch(Throwable eN){
//处理异常eN}复制代码在try语句后面添加一对小括号“()”,其中是声明或初始化资源语句,可以有多条语句语句之间用分号“;”分隔。
示例代码如下:
//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() {
// 自动资源管理
try (FileInputStream readfile = new FileInputStream("readme.txt"); ①
InputStreamReader ir = new InputStreamReader(readfile); ②
BufferedReader 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();
}
return null;
}}复制代码上述代码第①行~第③行是声明或初始化三个输入流,三条语句放到在try语句后面小括号中,语句之间用分号“;”分隔,这就是自动资源管理技术了,采用了自动资源管理后不再需要finally代码块,不需要自己close这些资源,释放过程交给了JVM。
注意 所有可以自动管理的资源需要实现AutoCloseable接口,上述代码中三个输入流FileInputStream、InputStreamReader和BufferedReader从Java 7之后实现AutoCloseable接口,具体哪些资源实现AutoCloseable接口需要查询API文档。
在一个方法中如果能够处理异常,则需要捕获并处理。但是本方法没有能力处理该异常,捕获它没有任何意义,则需要在方法后面声明抛出该异常,通知上层调用者该方法有可以发生异常。
方法后面声明抛出使用throws关键字,回顾一下10.3.3节成员方法语法格式如下:
class className {
[public | protected | private ] [static] [final | abstract] [native] [synchronized]
type methodName([paramList]) [throws exceptionList] {
//方法体
}
}复制代码其中参数列表之后的[throws exceptionList]语句是声明抛出异常。方法中可能抛出的异常(除了Error和RuntimeException及其子类外)都必须通过throws语句列出,多个异常之间采用逗号(,)分隔。
注意 如果声明抛出的多个异常类之间有父子关系,可以只声明抛出父类。但如果没有父子关系情况下,最好明确声明抛出每一个异常,因为上层调用者会根据这些异常信息进行相应的处理。假如一个方法中有可能抛出IOException和ParseException两个异常,那么声明抛出IOException和ParseException呢?还是只声明抛出Exception呢?因为Exception是IOException和ParseException的父类,只声明抛出Exception从语法是允许的,但是声明抛出IOException和ParseException更好一些。
如果将14.3节示例进行修改,在readDate()方法后声明抛出异常,代码如下:
//HelloWorld.java文件
package com.a51work6;
… …
public class HelloWorld {
public static void main(String[] args) { ①
try {
Date date = readDate(); ②
System.out.println("读取的日期 = " + date);
} catch (IOException e) { ③
System.out.println("处理IOException...");
e.printStackTrace();
} catch (ParseException e) { ④
System.out.println("处理ParseException...");
e.printStackTrace();
}
}
public static Date readDate() throws IOException, ParseException { ⑤
// 自动资源管理
FileInputStream readfile = new FileInputStream("readme.txt"); ⑥
InputStreamReader ir = new InputStreamReader(readfile);
BufferedReader 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;
}
}复制代码由于readDate()方法中代码第⑥、⑦、⑧行都有可能引发异常。在readDate()方法内又没有捕获处理,所有需要在代码第⑤行方法后声明抛出异常,事实上有三个异常FileNotFoundException、IOException和ParseException,由于FileNotFoundException属于IOException异常,所以只声明IOException和ParseException就可以了。
一旦readDate()方法声明抛出了异常,那么它的调用者main()方法,也会面临同样的问题:要么捕获自己处理,要么抛出给上层调用者。如果一旦发生异常main()方法也选择抛出那么程序运行就会终止。本例中main()方法是捕获异常进行处理,捕获异常过程前面已经介绍过了,这里不再赘述。

醴陵企业微信公众号小程序开发公司、醴陵企业网页设计方案、醴陵做网站开发价格、醴陵微信公众号制作运营报价明细表、醴陵网站设计公司费用、醴陵网站推广大概需要多少钱