Java程序发生异常就挂了吗?

简介:
为了验证程序不会挂,我写了个例子给大家看看。
 
测试代码:
 
import java.io.File; 
import java.io.IOException; 

/** 
* Java程序发生异常就挂了吗? 

* @author leizhimin,2008-10-10 15:18:26 
*/
 
public  class TestException { 
         public  static  void main(String[] args) { 
                TestException te =  new TestException(); 
                String s = te.test(); 
                System.out.println(s); 
        } 

         /** 
         * 这个方法有异常,看看异常发生时候会不会执行到底,会不会返回个值? 
         * 
         * @return 一个字符串! 
         */
 
         public String test() { 
                System.out.println( ">>>> start"); 
                 try { 
                        test1(); 
                        File f =  null
                        f.delete(); 
//                        int x = 10; 
//                        int y = 0; 
//                        int z = x / y; 
                        System.out.println( "计算完成了!"); 

                }  catch (Exception e) { 
                        System.out.println( "出异常挂了我如何处理呢?"); 
                        System.out.println(e); 
                }  finally { 
                        System.out.println( "最后总要做的一件事。。。"); 
                } 
                System.out.println( ">>>> end"); 
                 return  "good!"
        } 

         /** 
         * 抛个比较猛烈的异常看看程序会挂吗? 
         * 
         * @throws IOException 
         */
 
         public  void test1()  throws IOException { 
                 throw  new IOException(); 
        } 
}

运行结果:
>>>> start 
出异常挂了我如何处理呢? 
java.io.IOException 
最后总要做的一件事。。。 
>>>> end 
good! 

Process finished with exit code 0
 
 
换个异常运行看看:
>>>> start 
出异常挂了我如何处理呢? 
java.lang.NullPointerException 
最后总要做的一件事。。。 
>>>> end 
good! 

Process finished with exit code 0
 
再换个控制针看看:
>>>> start 
出异常挂了我如何处理呢? 
java.lang.ArithmeticException: / by zero 
最后总要做的一件事。。。 
>>>> end 
good! 

Process finished with exit code 0
 
结果表明:程序仅仅跳过了try中发生异常以后的代码,在发生异常时候执行了处理语句块catch,在catch执行结束后接着执行了finally语句块,然后继续执行try...catch...finally之外的语句块。


本文转自 leizhimin 51CTO博客,原文链接:http://blog.51cto.com/lavasoft/104843,如需转载请自行联系原作者
相关文章
|
4月前
|
人工智能 监控 安全
智慧工地解决方案,java智慧工地程序代码
智慧工地系统融合物联网、AI、大数据等技术,实现对施工现场“人、机、料、法、环”的全面智能监控与管理,提升安全、效率与决策水平。
132 2
|
2月前
|
安全 Java
Java异常处理:程序世界的“交通规则
Java异常处理:程序世界的“交通规则
320 98
|
3月前
|
存储 Java 编译器
对比Java学习Go——程序结构与变量
本节对比了Java与Go语言的基础结构,包括“Hello, World!”程序、代码组织方式、入口函数定义、基本数据类型及变量声明方式。Java强调严格的面向对象结构,所有代码需置于类中,入口方法需严格符合`public static void main(String[] args)`格式;而Go语言结构更简洁,使用包和函数组织代码,入口函数为`func main()`。两种语言在变量声明、常量定义、类型系统等方面也存在显著差异,体现了各自的设计哲学。
|
6月前
|
Java 程序员 数据库连接
我们详细地讲解一下 Java 异常及要如何处理
我是小假 期待与你的下一次相遇 ~
142 1
|
9月前
|
SQL Java 中间件
【YashanDB知识库】yasdb jdbc驱动集成BeetISQL中间件,业务(java)报autoAssignKey failure异常
在BeetISQL 2.13.8版本中,客户使用batch insert向yashandb表插入数据并尝试获取自动生成的sequence id时,出现类型转换异常。原因是beetlsql在prepareStatement时未指定返回列,导致yashan JDBC驱动返回rowid(字符串),与Java Bean中的数字类型tid不匹配。此问题影响业务流程,使无法正确获取sequence id。解决方法包括:1) 在batchInsert时不返回自动生成的sequence id;2) 升级至BeetISQL 3,其已修正该问题。
【YashanDB知识库】yasdb jdbc驱动集成BeetISQL中间件,业务(java)报autoAssignKey failure异常
|
9月前
|
SQL druid Oracle
【YashanDB知识库】yasdb jdbc驱动集成druid连接池,业务(java)日志中有token IDENTIFIER start异常
客户Java日志中出现异常,影响Druid的merge SQL功能(将SQL字面量替换为绑定变量以统计性能),但不影响正常业务流程。原因是Druid在merge SQL时传入null作为dbType,导致无法解析递归查询中的`start`关键字。
|
9月前
|
Java C语言
课时8:Java程序基本概念(标识符与关键字)
课时8介绍Java程序中的标识符与关键字。标识符由字母、数字、下划线和美元符号组成,不能以数字开头且不能使用Java保留字。建议使用有意义的命名,如student_name、age。关键字是特殊标记,如蓝色字体所示。未使用的关键字有goto、const;特殊单词null、true、false不算关键字。JDK1.4后新增assert,JDK1.5后新增enum。
181 4
|
9月前
|
搜索推荐 Java Android开发
课时146:使用JDT开发Java程序
在 Eclipse 之中提供有 JDT环境可以实现java 程序的开发,下面就通过一些功能进行演示。 项目开发流程
310 0
|
9月前
|
Java 编译器
课时7:Java程序基本概念(注释)
课时7介绍了Java程序中的注释。编程语言有其语法和语义,注释有助于理解代码需求,防止断档。Java支持三类注释:单行(//)、多行(/* */)和文档注释(/** */)。注释不会被编译器编译。范例中展示了如何在代码中使用注释,并强调了注释对项目文档管理的重要性。
194 3

热门文章

最新文章