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;
}
}
}
自定义异常
自定义异常要是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代码就被删除了。
分享到:
相关推荐
赠送jar包:aliyun-java-sdk-core-4.3.9.jar; 赠送原API文档:aliyun-java-sdk-core-4.3.9-javadoc.jar; 赠送源代码:aliyun-java-sdk-core-4.3.9-sources.jar; 赠送Maven依赖信息文件:aliyun-java-sdk-core-...
赠送jar包:aws-java-sdk-core-1.11.939.jar 赠送原API文档:aws-java-sdk-core-1.11.939-javadoc.jar 赠送源代码:aws-java-sdk-core-1.11.939-sources.jar 包含翻译后的API文档:aws-java-sdk-core-1.11.939-...
赠送jar包:aliyun-java-sdk-core-4.5.30.jar 赠送原API文档:aliyun-java-sdk-core-4.5.30-javadoc.jar 赠送源代码:aliyun-java-sdk-core-4.5.30-sources.jar 包含翻译后的API文档:aliyun-java-sdk-core-4.5....
aliyun-java-sdk-core-4.7.2.jar
赠送jar包:aliyun-java-sdk-core-4.5.10.jar; 赠送原API文档:aliyun-java-sdk-core-4.5.10-javadoc.jar; 赠送源代码:aliyun-java-sdk-core-4.5.10-sources.jar; 赠送Maven依赖信息文件:aliyun-java-sdk-core-...
aliyun-java-sdk-core-3.2.3 aliyun-java-sdk-core-3.2.3aliyun-java-sdk-core-3.2.3
ckeditor-java-core-3.5.3-javadoc.chm
赠送jar包:aws-java-sdk-core-1.11.939.jar; 赠送原API文档:aws-java-sdk-core-1.11.939-javadoc.jar; 赠送源代码:aws-java-sdk-core-1.11.939-sources.jar; 赠送Maven依赖信息文件:aws-java-sdk-core-1.11....
Core Java Volume I--Fundamentals(10th) 英文epub 第10版 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除
赠送jar包:aws-java-sdk-core-1.12.160.jar; 赠送原API文档:aws-java-sdk-core-1.12.160-javadoc.jar; 赠送源代码:aws-java-sdk-core-1.12.160-sources.jar; 赠送Maven依赖信息文件:aws-java-sdk-core-1.12....
ckeditor-java-core-3.5.3.jar ckeditor-java-core-3.5.3.jar ckeditor-java-core-3.5.3.jar ckeditor-java-core-3.5.3.jar ckeditor-java-core-3.5.3.jar
aliyun-java-sdk-core-3.4.0.jar
Core Java Volume II--Advanced Features(10th) 英文azw3 第10版
赠送jar包:aliyun-java-sdk-core-4.3.9.jar; 赠送原API文档:aliyun-java-sdk-core-4.3.9-javadoc.jar; 赠送源代码:aliyun-java-sdk-core-4.3.9-sources.jar; 赠送Maven依赖信息文件:aliyun-java-sdk-core-...
赠送jar包:aliyun-java-sdk-core-4.5.10.jar; 赠送原API文档:aliyun-java-sdk-core-4.5.10-javadoc.jar; 赠送源代码:aliyun-java-sdk-core-4.5.10-sources.jar; 赠送Maven依赖信息文件:aliyun-java-sdk-core-...
SDK工具包中一共包含了2个类库,一个aliyun-java-sdk-core包,另外一个是alicom-dysms-api包
赠送jar包:aliyun-java-sdk-core-4.5.30.jar; 赠送原API文档:aliyun-java-sdk-core-4.5.30-javadoc.jar; 赠送源代码:aliyun-java-sdk-core-4.5.30-sources.jar; 赠送Maven依赖信息文件:aliyun-java-sdk-core-...
aliyun-java-sdk-dysmsapi-1.0.0.ja jar aliyun sdk java core
Java核心技术第九版Java7,Mobi格式电子书。Core Java Volume I--Fundamentals (9th Edition)
--Fundamentals 9th Edition).rar》是一个包含两本经典Java编程书籍的压缩文件,分别对应《Core Java Volume I--Fundamentals 9th Edition》和《Core Java Volume II--Advanced Features 9th Edition》的第九版。...