java清道夫的秘密任务-必威体育官网下载_betway体育app_必威体育注册

小C是一名特别的黑客,他专门为黑客供给服务,打扫黑客进犯的痕迹,防止被查到为何人进犯。

今日他正兴味盎然的玩游戏《连环清洁工 》,它是由ijava清道夫的隐秘使命-必威体育官网下载_betway体育app_必威体育注册 Fun4all S.A.制作发行的一款电视剧引荐违法体裁动作冒险类游戏,故事剧情叙述的是一个专门山寨他人的杀手,专门仿照最近发作的大案要女生虐男生案,制作相似的凶杀案。游戏中玩家扮演一名专业凶案现场打扫人员,为客户处理尸身、整理血迹、躲藏凶器等违法依据,玩家接受使命的时分不能问任何问题。

忽然接到小白恳求协助的紧迫电话,注:小白是小C侵略小白的电脑后知道的,内容太多,拜见具体地址https://cloud.tencent.com/developer/news/333203。

本来小白在学习java,碰到一个编程问题:他文件操作封闭资源的时分会不可思议的报错。代码如下:

 public void openFile() throws IOException {
FileReader reader = new FileReader("someFile");
int i=0;
while(i != -1){
i = reader.read();
System.out.println((char) 生化公园i );
}
reader.close();
System.out.println("--- File End ---");
}

小C针对小白刚刚编程的阅历,只好循循诱导。

小C:上面的代码是不是没有捕获反常?是不是能够把反常捕获到,再剖析反常原因?

小白:对哦,那我运用try 。。catch试试

 public void openFile(){
try {
// constructor may throw FileNotFoundException
FileReader reader = new FileReader("someFile");
int i=0;
while(i != -1){
//reader.read() may throw IOException
i = reader.read();
皮肤枯燥起皮怎么办System.out.println((char) i );
}
reader.cjava清道夫的隐秘使命-必威体育官网下载_betway体育app_必威体育注册 lose();
System.out.println小猫垂钓的故事("--- File End ---");
} catch (FileNotFoundException e) {
//do something clever with the exception
} catch (IOException e) {
//do something clever with the exception
}
}

小C:做的很不错,知道捕捉多重反常了!,资罗布麻源的封闭是不是放到finally比较好?

小白:对哦,我看语法有这样的,那我从头写一下

 FileReader reader = null;
t对话ry {
reader = new FileReader("someFile");
int i=0;
while(i != -1){
i = reader.read();
System.out.println((char) i );
}
} catch (IOException e) {
//do something clever with the exception
} finally {
reader.close();
System.out.println("--- File End ---");
}
}

小白:哦,还遗忘reader的判别,再改一下:

 public void openFile(){
FileReader reader = null;
try {xiannuhu
reader = new FileReader雷克萨斯rx300("someFile");
int i=0;
while(i != -1){
i = reader.read();
System.out.println((char) i );
}
} catch (IOException e) {
//do something clever with the exception
} finally {
if(reader!=null) {
36斤黄鳝 reader.close();
}
System.out.println("--- File End java清道夫的隐秘使命-必威体育官网下载_betway体育app_必威体育注册 ---");
}
}

小C:reader的封闭,是不是还有或许抛出反常,是不是还要捕获?

小白:是哦,我忘记了,修改后的是这样的吗?

 public 皮尔卡丹vobongddakid openFile(){
FileReader reader = null;
try {
reader = new FileReader("someFile");
int i=0;
while(i != -1){
i = reader.read();
System.out.println((char) i );
}
} catchqq网名大全 (IOException e) {
//do something clever with the exception
} finally {
if(reader != null){
try {
java清道夫的隐秘使命-必威体育官网下载_betway体育app_必威体育注册 reader.close();
} catch (IOException e) {
//do something clever with the exception
}
}
System.out.println("--- File End ---");
}
}

小C:代码是不是太繁琐了?有没有更简练的办法?将jvm帮你处理繁琐的作业?

小白:听说过ry-with-resources,但没有用过。

小C:那我给你举个比如吧

 public static void main(String[] args)
{
try (BufferedReader br = new BufferedReader(new FiclsleReader("C:/temp/test.txt")))
{
String sCurrentLine;
while ((sCurrentLine = br.readLine()) != null)
{
System.out.println(sCurrentLine);
}
}
catch (IOException e)
{
e.printStackTrace();
}
}

把资源放到try()内部, JVM会调用java.lang.AutoCloseable.close() 办法,主动封闭try()内部的资源。

小白:凶猛,我学会了。

小C:那java清道夫的隐秘使命-必威体育官网下载_betway体育app_必威体育注册 我考考你。

 public static void main(String[] argsvisa卡) {
try {
System.out.println("Hello world");
return;
} finally {
System.out.println("Goodbye world");
}
}

这个会打印出什么成果?

小白:“hello world” 由于return 退出了,finally不能履行。

小C:不对,finalljava清道夫的隐秘使命-必威体育官网下载_betway体育app_必威体育注册 y总是会履行的,打印

Hello world

Goodbye world

小白:我理解了,finally总是会履行的。

小C:那可不必定哦,看看这个:

 public static void main(String[] args) {
try {
System.out.println("Hello world");
System.exit(0);
} finally {
System.out.println("Goodbye world");
}
}

小白:不是打印?

Hello world

Goodbye wqq客服orld

小C:不管try句子块的履行是正常地仍是意外地完毕,finally句子块的确都会履行。

但是在这个程序中,try 句子块根本就没有完毕其履行进程。System.exit 办法

将中止当时线程和一切其他当场逝世的线程。finally 子句的呈现并不能给予线

程持续去执黄连的成效与效果行的特别权限。

假如想要履行,想要运用hook

 public static void main(String[] args) {
System.out.println("Hello world");
Runtime.getRuntime().addShutdownHook(
new Thread() {
public void run() {
System.out.println("Goodbye world");
}
三点水加元 });
System.exit(0);
}

小白:好奇特!

小C:学无止境,一同加油!今日到这儿了,我还要持续我的游戏呢。

参考资料

【1】http://tutorials.jenkov.com/java-exce活秘戏图ption-handling/basic-try-catch-finally.html

【2】https://howtodoinjava.com/java/exception-handlingjava清道夫的隐秘使命-必威体育官网下载_betway体育app_必威体育注册 /try-catch-finally/

【3】https://howtodoinjava.com/java7/try-with-resources/

【4】java解惑

评论(0)