java基础-不是很明确java中的trycatch中,finally()的作用

问题描述

不是很明确java中的trycatch中,finally()的作用

请大家看一下我下面的代码:
public class trycatch {
public static void main(String args[])
{
try{
System.out.println(2/0);
System.out.println("检查是否有异常");
}

catch(ArithmeticException e )
{
System.out.println("系统正在维护,请与管理员联系");
e.printStackTrace();

}
finally
{
    System.out.println("必须执行的语句,不管你是否异常");
}
System.out.println("我主要是想看一下他会不会执行,为什么上面有异常他还是执行了这条语句呢,感觉finally没有用似得");

}
}

//上面这个程序显然是抛出了异常的,但是为什么不在finally()之内的语句也执行了呢??
感觉有没有finally,之后还不是一样执行么?
我是一个初学者,不是很理解finally的作用,恳请各位大神指教,小弟在此谢谢大家啦

解决方案

不管是否抛出异常finally内的代码都必须执行。例如,jdbc操作时,一般都在finally内执行关闭资源的操作(查询时不用关闭资源,不然会出问题)。

解决方案二:

Java的异常处理机制是这样的 try{}是监控的代码,catch{}是处理异常,finally{}是无论是否发生异常,无论异常是否处理都会执行的代码。而finally后面的代码是否执行的关键就是是否有catch语句。catch就是处理异常,就相当于把异常当作正常程序处理了,所以finally后面的代码会正常执行。如果没有catch语句,发生异常后jvm执行完finally代码之后就会将异常抛出,这样的话finally后面的代码就不会执行了。

时间: 2024-12-09 14:03:08

java基础-不是很明确java中的trycatch中,finally()的作用的相关文章

Java基础之010-深入理解Java的String类

Java基础之010-深入理解Java的String类                                        老帅        1. 首先String不属于8种基本数据类型,String是一个类.  因为对象的默认值是null,所以String的默认值也是null:但它又是一种特殊的对象,有其它对象没有的一些特性.  2. new String()和new String("")都是申明一个新的空字符串,是空串不是null:  3. String对象实例化   

java基础-有什么是小java能做而普通java不能做的?

问题描述 有什么是小java能做而普通java不能做的? 网络上大多在讲的是普通java程序能做,而限制小java的.我知道肯定也有小java能做,而普通java不能做的.个人觉得可能是关于获取浏览器的信息方面是小java能做,而普通java程序不能做的.不知道对不对? 另外,可能不仅限于此,希望有大神愿意给小弟讲解一下,最好能附上举例.谢谢啦~ 解决方案 做了那么多年还没听说过什么是小java.java啥都能做

一篇文章教会你,如何做到招聘要求中的“要有扎实的Java基础

来历 本文来自于一次和群里猿友的交流,具体的情况且听LZ慢慢道来. 一日,LZ在群里发话,"招人啦." 然某群友曰,"群主,俺想去." LZ回之,"你年几何?" 群友曰,"两年也." LZ憾言之,"惜了,三至五为佳.然如汝有扎实之基础,且附一技之长,倒也并非不可呀." 群友惑,问之,"何为一技之长?" LZ抚须答曰,"皆可,吾之一技即为写." 群友又问之,"

J2ME中需要的Java基础知识

现在有大部分人,都是从零开始学J2ME的,学习J2ME的时候,总是从Java基础开始学习,而且现在讲Java基础的书籍中都是以J2SE来讲基础,这就给学习造成了一些不必要的麻烦,下面将J2ME中用到的和不需要的Java基础知识做一个简单的说明:        J2ME中使用到的Java基础知识: 1.  Java语法基础:包括基本数据类型.关键字.运算符等等 2.  面向对象的思想:类和对象的概念,继承和多态等等. 3.  异常处理 4.  多线程 J2ME中没有用到的Java基础知识: 1. 

java基础-请教方向(Java研发方向),初学者

问题描述 请教方向(Java研发方向),初学者 刚学了一学期Java, 想知道Java一般的学习过程是先学什么,后学什么比较合理.望不吝指教- 解决方案 1.变量 方法 逻辑分支语句 循环语句 运算符 逻辑运算符 基本数据类型 引用数据类型 数组 集合 ,基本语法必须要熟练掌握,这些东西可能是习惯养成 2.把类.抽象类.接口 继承 变量 方法 重写 重载 转型 ,结合面向对象以及内存角度来理解,面向对象就是从现实生活中对象之间关系引出的一种编程思想 最简单的理解就是 class就是种类的意思 用

Java基础-04.总结switch,for,while,do。while跳转语句

你需要的是什么,直接评论留言. 获取更多资源加微信公众号"Java帮帮" (是公众号,不是微信好友哦) 还有"Java帮帮"今日头条号,技术文章与新闻,每日更新,欢迎阅读 学习交流请加Java帮帮交流QQ群553841695 分享是一种美德,分享更快乐! 1:switch语句(掌握) (1)格式:switch(表达式) {case 值1:语句体1;break;case 值2:语句体2;break;...default:语句体n+1;break;} 格式解释说明:sw

Java基础之如何学好Java_java

Java是个平台,我只想说说我对学好Java的一点看法,希望对初学者有所帮助. 1. 思考一下 学习Java之前,先别急,静下心来好好想想: 1)你对学习Java是否有兴趣? 2)你是否能静下心来坚持不懈地学习? 嗯,这是个容易但又绝对不应该忽略的问题,你确信自己对Java感兴趣.而且又有吃苦的准备,那你才可能学好Java!如果具备这两点条件,就请继续往下看-- 2. 准备一下 请不要把你的学习Java之路和其它计算机技术分开看待,技术的联系往往是千丝万缕的,你应该掌握一些学习Java所涉及的基

对象-Java基础学习遇见的问题

问题描述 Java基础学习遇见的问题 我是将自定义的对象,存储到了ArrayList集合中,出现下面错误,咋回事啊 多谢各位大神! 解决方案 19行的public拼错了少了b 解决方案二: ArrayList 里面应该加参数吧 ArrayList> list= new ArrayList>();这样定义试试 解决方案三: 黑马程序员 Java基础学习笔记 线程安全问题java基础问题01java基础问题18 解决方案四: 特殊词都带色的,,,拼错了色不对... 解决方案五: 用的什么开发工具啊

java基础问题访问权限

问题描述 java基础问题访问权限 package test; public class Test101 { public static void main(String[] args) { int j = i; } } class Test102 { int i = 123; } i cannot be resolved to a variable 怎么错了? 解决方案 因为你定义的i不在本类中,且i的权限是默认,test101类无法访问 解决方案二: Java基础--访问权限java基础--