`
heimeiyingwang
  • 浏览: 97474 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

corejava辅导(7--3)

阅读更多

finally关键字

 

finally{……}finally语句块中的代码无论如何都会运行

 

trycatch后还可以再跟一个finally块。finally块中的代码语句无论如何(无论有没有异常)都会执行(finally块多写一些释放资源,关闭连接的代码)。finally块中的代码在和try块中的代码的冲突时,finally块中的代码一定会执行且会忽略try块中的代码。但是System.exit(0);(虚拟机退出语句)后则不执行fianlly中的代码。

 

try{..}catch(..){..}

try{..}catch(..){..}finally{..}

try{..}finally{..}

以上三种写法都可以。

 

程序中抛出异常就要处理,无论是使用throws,还是用捕获是用trycatch,不对异常进行处理,编译不通过。

 

如何知道在编写的程序中会出现例外呢

1.调用方法,查看API中查看方法中是否有已检查错误。

2.在编译的过程中看提示信息,然后加上相应的处理。

 

Throwable有一个message属性。在使用catch的时候可以调用:

 

try{……}Catch(IOException e){System.out.println(e.message());}//异常的信息的显示

try{……}Catch(IOException e){e. printStackTrace();}//异常堆栈信息的显示

 

printStackTrace()方法是打印异常堆栈信息,是常用的异常处理的访法,它是异常的方法。

 

以上两条语句都可打印出错的信息。告诉我们出错类型及代码的运行过程,在调试的中非常有用。

 

例:

public class TestHundredException{

     public static void main(String[] args){

         MyClass mc=new MyClass();

         try{//在这个try语句块中抛出的异常会得到处理

              System.out.println(mc.add(10,80));

         }

         catch(HundredException e){

//捕获try块中抛出的异常

              e.printStackTrace();

         }

         try{

              System.out.println(mc.add(30,70));

         }

         catch(HundredException e){

              e.printStackTrace();

         }finally{

              System.exit(0);

         }

     }

}

class HundredException extends Exception{//自定义异常

     public HundredException(String message){

         super(message);

     }

}

 

class MyClass{

     public int add(int a,int b) throws HundredException{

         int c=a+b;

         if (c==100) {

throw new HundredException("a+b can\'t be 100");

else{

return c;

         }

     }

}

 

自定义异常

 

自定义异常要是Exception的子类,以下是一个例子:

自己定义异常类必须是Excepiton或者RuntimeException的子类。

 

public class TestMyException{

     public static void main(String[] args){

         int n=Integer.parseInt(args[0]);

         A a=new A();

         try{

              a.calculate(n);

         }

         catch(Exception e){

              e.printStackTrace();

         }

         System.out.println("OK");

     }

}

class A{

     public void calculate(int n) throws ZhiShuException{

         for(int i=2;i<n;i++){

              if (n % i == 0) return;

         }

         throw new ZhiShuException(n+" is a Prime Number");

     }

}

 

class ZhiShuException extends Exception{//自定义的异常,是Exception的子类

     public ZhiShuException(String message){

//注意在构造父类对象时需要String类型的message作为参数

         super(message);

     }

}

 

开发中的两个道理:

     如何控制try的范围:根据操作的连动性和相关性,前面的程序代码块抛出的异常影响了后面程序代码的运行,这两个段程序代码就存在关联,应该放在同一个try中。

 

     对已经查出来的例外,有throw(消极)try {…}catch(…){…}(积极)两种处理方法。对于throws把异常抛到try catch能够恰当地处理异常的位置(即放在具备对这个异常进行处理的能力的位置)。没有处理异常的能力就将异常继续上抛。

 

throw是一个语句,用来做抛出例外的功能。

throws是表示本方法中会异常抛出,本方法不做处理,将异常对象向上抛出。

throws写的是异常类型,throw后写的是要抛出的异常对象。

 

注意:方法的覆盖中,如果子类的方法抛出的例外是父类方法抛出的例外的父类型,那么编译就会出错:子类无法覆盖父类。

 

结论:子类方法不可比父类方法抛出更多的例外。子类抛出的例外或者与父类抛出的例外一致,或者是父类抛出例外的子类型。或者子类型不抛出例外。如果父类型无throws时,子类型也不允许出现throws。此时只能使用try catch

 

断言是一种调试工具(assert

 

其后跟的是布尔类型的表达式,如果表达式结果为真不影响程序运行。如果为假系统出现低级错误,在屏幕上出现assert信息。

Assert只是用于调试。在产品编译完成后上线assert代码就被删除了。

 

分享到:
评论

相关推荐

    很好的一本java辅导资料!

    2. **corejava辅导(1--1)至(5--3)**:这些章节可能逐步介绍了Java语言的基础语法,如变量、数据类型、运算符、控制流程(条件语句、循环)、方法定义和调用、数组的使用以及字符串处理。 3. **corejava辅导(2-...

    Java面试集锦: Core Java Essentials

    整体来看,《Java面试集锦: Core Java Essentials》是一本全面覆盖Java核心技术要点的面试辅导书籍。无论是对于即将参加面试的求职者,还是希望巩固Java基础知识的开发者,本书都提供了丰富的学习材料和面试问题,...

    java知识全集

    **3.4 corejava辅导(1--3)** - **集合框架**: ArrayList、LinkedList、HashMap等。 - **多线程**: 线程的基本概念和实现方式。 - **泛型**: 泛型类和泛型方法的定义。 **3.5 corejava辅导(2--1)** - **枚举**...

    几万的Java上课内容,辅导班弄来的,大家自学的可以看看

    1. Java设计和编程基础:涵盖Core Java编程基础、Java设计原则、算法、模式等核心知识。 2. 数据库和Web前端技术:涉及数据库技术(如Oracle、MySQL、SQL优化和PLSQL开发)、Web前端技术(如H5、CSS3、JavaScript、...

    javaWeb基础技术辅导

    7. **CoreJava辅导资料.zip**:这可能包含Java语言的基础教程或参考资料,包括类、对象、接口、异常处理、集合框架等内容,这些都是JavaWeb开发的基础。 8. **javaWeb基础技术辅导.zip**:这个文件很可能包含了详细...

    javaee请假管理系统文档.docx

    - CPU: Intel Core i5 2.0 GHz - 内存: 2 GB - 硬盘: 250 GB #### 七、测试结果与分析 **测试项目:** 请假管理系统 **测试人员:** 麦城进 **测试结果:** - **系统操作登陆测试:** 用户登录成功后,能够正确跳转...

    数据库代码

    "CoreJava.rar"可能是一个包含Java核心编程资源的压缩文件,Java是一种广泛用于开发数据库应用程序的编程语言。在数据库应用中,Java可以用来编写DAO(数据访问对象)层,实现对数据库的操作,如CRUD(创建、读取、...

    学生请假管理系统_学生请假管理系统_源码.zip

    2. **后端开发**:后端通常基于Java、Python或.NET等语言,利用Spring Boot、Django或ASP.NET Core等框架进行开发。 3. **数据库管理**:MySQL、Oracle或SQL Server等关系型数据库用于存储学生、教师信息以及请假...

Global site tag (gtag.js) - Google Analytics