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 函数里面的代码是由两个线程来执行的。请大神指点。

posted @   日程百行  阅读(560)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· 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
点击右上角即可分享
微信分享提示