每日一句
昨日翻译
Quality matters more than quantity.
质量比数量重要
今日名言
Suffering is the most powerful teacher of life
2019.03.08问题及解析
public class ExceptionTest {
public static void main(String[] args) {
try{
int i = 100/0;
System.out.print(i);
}catch (Exception e){
System.out.print(1);
throw new RuntimeException();
}finally {
System.out.print(2);
}
System.out.print(3);
}
}
(左右滑动查看完整代码)请问上述程序除了异常外,会输出什么?为什么?
答案
还会输出12,为什么呢?
首先可以看到,我们进入程序后首先计算100/0之后赋值给i
jdk的官话
我们小学就学过除数是不可以为0,那么这个是属于不满足我们的算术条件了,虽然它能够通过编译,但是它在运行时,会抛出ArithmeticException异常,我们查询API可以看到这个异常的描述:
Thrown when an exceptional arithmetic condition has occurred. For example, an integer "divide by zero" throws an instance of this class.
当发生一个算术条件异常时会抛出这个异常。比如,一个整数除以0,就会抛出这个异常类的一个实例。
出错啦
那么我们这里也就很明显会抛出这个异常了。
抛出异常之后呢,我们对它进行了try...catch捕获,因此并不会执行接下来的输出语句,而是执行我们catch包裹的语句,进来之后自然而然输出了1,之后虽然我们跑出了ArithmeticException异常但是它被捕获了之后就不会再抛出了,因此就没有它的相关信息,它的相关信息存放在了e变量里, 我们也可以自己把它输出来看看是不是。
那么我们程序员手工的抛出了一个异常RuntimeException(),异常被抛出之后如果我们不进行catch会继续往外抛,并输出错误异常信息,同时我们在finally终输出了2,finally语句是否抛出异常都会执行,因此会打印出2,因为程序抛出了异常所以不会再执行接下来的语句,因此3并没有输出出来。
这里面也有多线程?
因此我们会输出12和异常信息,但是执行多次后我发现并不是每次12都在异常前面有时2会在异常语句打印过程中输出,因此我怀疑finally的执行有种多线程打架的味道,抛出异常后继续执行finally,有时候finally执行的慢了点就会打印出一部分异常,这个时候开始打印finally的语句,所以2就混进了异常信息中,不知道评论区有没有大神来解释解释,哈哈,我实在是没查得出来原因。
因此除了异常外还会输出12,理由如上,注意这里用的pirnt打印而不是平常的println哦!
实名表扬Carlos
就在昨天我们才为小伙伴lmbby献上膝盖后,今天又不得不再次低下骄傲的头颅,Carlos????同学的答案详细且有扩展,希望大家多多向他们学习,那么在这里附上链接的地址(java每日一练(19_03_08))希望没看过的小伙伴们仔细去看评论,不当要看答案解析,扩展内容也很精彩哦!
每一个留言的小伙伴也很棒,希望你们继续加油!
2019.03.09问题
今天来到神奇题~
public class IntegerTest {
public static void main(String[] args) {
Integer num1 = 1;
Integer num2 = 1;
Integer num3 = 222;
Integer num4 = 222;
System.out.println(num1==num2);
System.out.println(num3==num4);
}
}
(左右滑动查看完整代码)
请问上述程序的输出结果是什么?
二手书重用计划
大家在学习和生活过程中应该会用到纸质书吧~用完放着占地方,扔掉又好可惜,不如借这个平台卖掉吧,有旧书想出掉的可以拍照发给刀妹哦(刀妹微信: best396975802),刀妹会用微信公众号帮大家宣传!!给大家带来更好的福利,嘻嘻~书籍种类不限。
眼过千遍,不如手过一遍,一定一定要把自己的想法写出来(想法不论对错,写你所想就是进步),这样才会有所收获,你的每一个留言和分享小刀都会认真回复,彼此学习共同进步~
小刀和小伙伴在学习群里等你来一起监督学习哦,坚持!加油!进群请加小刀微信: best396975802
感谢所有在后台留言的小伙伴们,每一分的付出都会收到回报,你们都是最棒的!
PS:刀妹最近
END
微信群请点击公众号菜单进微信群
文字|天堂
排版|花音
点个好看再走吧~(づ ̄3 ̄)づ╭❤~