`

java简介以及迅速了解java(十三)

阅读更多

finally关键字
finally{……}在finally语句块中的代码无论如何都会运行
try,catch后还可以再跟一个finally块。finally块中的代码语句无论如何(无论有没有异常)都会执行(finally块一般写一些释放资源,关闭连接的代码)。finally块中的代码在和try块中的代码的冲突时,finally块中的代码一定会执行且会忽略try块中的代码。但是System.exit(0);(虚拟机退出语句)后则不执行fianlly中的代码
try{..}catch(..){..}
try{..}catch(..){..}finally{..}
try{..}finally{..}
以上三种写法都可以。
程序中抛出异常就要处理,无论是使用throws,还是用捕获是用try,catch,不对异常进行处理,编译不通过
如何知道在编写的程序中会出现例外呢
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;
}
}
}

结果为:

 90
com.sdjt.study.corejava.HundredException: a+b can't be 100
 at com.sdjt.study.corejava.MyClass.add(TestHundredException.java:36)
 at com.sdjt.study.corejava.TestHundredException.main(TestHundredException.java:18)

 

自定义异常
自定义异常要是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);
}
}

 结果:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
 at com.sdjt.study.corejava.TestMyException.main(TestMyException.java:9)
开发中的两个道理:
① 如何控制try块的范围:根据操作的连动性和相关性,前面的程序代码块抛出的异常影响了后面程序代码的运行,这两
个段程序代码就存在关联,应该放在同一个try块中。
② 对已经查出来的例外,有throw(消极)和try {…}catch(…){…}(积极)两种处理方法。对于throws把异常抛到try
catch能够恰当地处理异常的位置(即放在具备对这个异常进行处理的能力的位置)。没有处理异常的能力就将异常继续上
抛。
throw是一个语句,用来做抛出例外的功能。
throws是表示本方法中会异常抛出,本方法不做处理,将异常对象向上抛出。
throws写的是异常类型,throw后写的是要抛出的异常对象。

注意:方法的覆盖中,如果子类的方法抛出的例外是父类方法抛出的例外的父类型,那么编译就会出错:子类
无法覆盖父类。
结论:子类方法不可比父类方法抛出更多的例外。子类抛出的例外或者与父类抛出的例外一致,或者是父类抛出例外的子类
型。或者子类型不抛出例外。如果父类型无throws时,子类型也不允许出现throws。此时只能使用try catch。
断言是一种调试工具(assert)
其后跟的是布尔类型的表达式,如果表达式结果为真不影响程序运行。如果为假系统出现低级错误,在屏幕上出现assert信息。
Assert只是用于调试。在产品编译完成后上线assert代码就被删除了。

分享到:
评论

相关推荐

    JAVA语言快速入门

    接下来,了解Java的基础语法是关键。这包括: 1. **基本数据类型**:如整型(byte, short, int, long)、浮点型(float, double)、字符型(char)和布尔型(boolean)。 2. **变量**:声明和初始化变量,理解其作用...

    Java核心编程Java 课件ppt

    1. **Java简介**:Java是由Sun Microsystems开发的,后来被Oracle公司收购。它被设计成“一次编写,到处运行”,这意味着编写的代码可以在任何支持Java的平台上运行,无需重新编译。 2. **Java环境搭建**:学习如何...

    内含几十个优秀Java简历模板 1-3年适用

    本资源包含几十个精心设计的Java简历模板,旨在帮助这个阶段的程序员更好地突出自己的专业能力,提高面试机会。 这些简历模板通常会涵盖以下几个关键部分: 1. **基本信息**:包括姓名、联系方式(电话、邮箱)、...

    java快速导出几十万百万生成DBF文件数据后台

    首先,我们需要了解Java处理大量数据的基本策略。在Java中,处理大数据的关键在于优化内存管理和批量操作。对于几百万条记录的数据,一次性加载到内存中可能会导致内存溢出,因此通常采用分批读取、流式处理或使用...

    java快速导出几十万百万生成DBF文件数据后台内附有javadbf.jar

    本文将深入探讨如何使用Java来快速导出大量数据到DBF文件,以及如何利用`javadbf.jar`库进行高效操作。 首先,DBF文件是基于dBase III、IV或FoxPro等早期数据库管理系统的文件格式。它以ASCII文本存储表格数据,...

    JAva资源网站大全

    这里不仅有Java基础知识的详细介绍,还有高级特性的深入解析,是Java开发者深入了解Java内部机制的首选之地。 ### 2. CN-Java 网址:http://www.cn-java.com/ CN-Java是一个专注于Java技术的中文社区,提供了丰富...

    2022年应届生java简历范文.docx

    * Java开发职业发展道路:了解Java开发职业的发展道路,如从初级开发到高级开发的发展过程。 * Java开发职业规划:了解Java开发职业的规划,如职业发展目标、职业发展方向等。 * Java开发职业技能:了解Java开发职业...

    java脚本 快速学习

    三、Java与JavaScript的区别 1. 类型系统:Java是静态类型语言,而JavaScript是动态类型语言。 2. 编译与执行:Java代码需要编译成字节码再运行,JavaScript则直接由解释器执行。 3. 用途:Java广泛应用于服务器端...

    Java2Pas(Java代码转换成Delphi代码)

    下面我们将详细探讨Java2Pas的工作原理、使用方法以及其在IT领域的应用。 首先,Java和Delphi是两种不同的编程语言,它们有着不同的语法结构和编程模型。Java是一种面向对象的语言,由Sun Microsystems(现已被...

    Java croe java 思想

    通过阅读《Java核心编程思想》,读者不仅能全面掌握Java语言,还能了解到许多最佳实践和设计模式,从而在实际项目开发中游刃有余。这本书的2010最新版可能还包含了Java新特性的介绍,比如Java 7和8的Lambda表达式、...

    java基础练习题 (目前到集合内含三个小综合案例)

    这份"java基础练习题(目前到集合内含三个小综合案例)"涵盖了Java的基础知识,旨在帮助学习者巩固并提升Java编程技能。从JDK(Java Development Kit)入门到集合框架的学习,这是一个全面了解和实践Java编程的重要...

    Head First Java 中文高清版.pdf

    这本书以其独特的教学方式,通过丰富的图表、幽默的插图和非传统的方式深入浅出地讲解Java编程语言,旨在帮助读者快速掌握Java编程的核心概念和技术。 1. **Java简介**:Java是一种面向对象的、跨平台的编程语言,...

    韩顺平30天学java

    《韩顺平30天学Java》是一门针对初学者设计的Java编程课程,旨在帮助学员在短短一个月的时间内掌握Java编程基础。该课程由知名IT教育专家韩顺平教授,以其独特的教学风格和深入浅出的讲解方式,使得复杂的编程概念变...

    java基础教程ppt

    1. **Java简介**:介绍Java的历史、特点以及其在软件开发中的应用领域。Java由Sun Microsystems的詹姆斯·高斯林(James Gosling)于1995年推出,其设计目标是“一次编写,到处运行”。 2. **环境搭建**:讲解如何...

    JAVA API官方文档中文版

    对于初学者来说,这是了解Java API的起点。 2. **类和接口**:这是文档的主体部分,详细列出了Java平台提供的所有类和接口。每个条目都包含了类或接口的定义、构造方法、方法、常量等详细信息。例如,`java.lang....

    java实现视频压缩

    Java中可以使用第三方库,如x264j(H.264)或jniwrapper(支持多种编码),通过JNI(Java Native Interface)调用C/C++编写的底层库实现编码。 4. **封装**:压缩后的视频流需要封装成特定的容器格式,如MP4、FLV、...

    2012java三级考试题库

    10. **Java SE和Java EE的区别**:了解Java标准版(SE)和企业版(EE)的应用场景和主要组件。 11. **API的使用**:如Math类、Date和Calendar类、Collections工具类等,考生需要熟悉常用API的使用。 这个“2012...

    学习JAVA 快速学习JAVA

    1. **Java语言概述**:了解Java的历史、特性以及其在软件开发中的应用。Java是由Sun Microsystems的詹姆斯·高斯林(James Gosling)在1995年创建的,现在由Oracle公司维护。它的主要特点包括平台无关性(Write Once...

    java调用第三方的短信接口

    在Java开发中,调用第三方短信接口是一项常见的任务,用于实现验证码发送、通知提醒等功能。以下将详细讲解这个过程中的关键知识点。 1. **HTTP请求**:大部分第三方短信平台提供的API是基于HTTP协议的,因此Java中...

Global site tag (gtag.js) - Google Analytics