catch 里面的代码和try catch 外面的代码执行顺序很奇怪,求大神指点
1 package multiShape; 2 3 public class People { 4 public String className = "people class"; 5 public void eat() { 6 System.out.println("People eat"); 7 } 8 9 public void breath() { 10 System.out.println("People breath"); 11 } 12 13 }
1 package multiShape; 2 3 public class Student extends People{ 4 public String className = "Student class"; 5 6 public void eat() { 7 System.out.println("Student eat"); 8 } 9 10 public void study() { 11 System.out.println("Student study"); 12 } 13 }
1 package multiShape; 2 3 public class Test { 4 5 public static void main(String[] args) { 6 // TODO Auto-generated method stub 7 People pp = new Student(); 8 pp.breath(); 9 pp.eat(); 10 System.out.println("---" + pp.className); 11 try { 12 if(1 > 0) {throw new IllegalArgumentException("throw my exception");} 13 } 14 catch(Exception e) { 15 e.printStackTrace(); 16 System.out.println("======================" ); 17 } 18 Student st = (Student)pp; 19 st.breath(); 20 st.eat(); 21 st.study(); 22 System.out.println("---" + st.className); 23 } 24 }
main 方法的执行结果:
People breath
Student eat
java.lang.IllegalArgumentException: throw my exception
---people class
======================
People breath
Student eat
Student study
---Student class
at multiShape.Test.main(Test.java:12)
感觉上面的这个执行结果的输出的顺序很奇怪,和我预期的结果有点不一样,我预期的结果应该是像下面这样子的:
People breath
Student eat
---people class
java.lang.IllegalArgumentException: throw my exception
at multiShape.Test.main(Test.java:12)
======================
People breath
Student eat
Student study
---Student class
请问为什么执行结果会是那样,而且每次执行后的输出结果顺序都会有不一样 , 是不是因为catch 里面的代码和main 函数里面的代码是由两个线程来执行的。请大神指点。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix