Java基础 异常-finally 包package
2015-06-05 17:27
393 查看
异常
finally
finally代码块:定义一定执行的代码通常用于关闭资源。
package 异常.Finally; class FuShuException extends RuntimeException { FuShuException(String msg) { super(msg); } } class Demo { int div(int a,int b) { if(b<0) throw new FuShuException("出现了除数为负数"); if(b==0) throw new ArithmeticException("被零除了 /0"); return a/b; } } public class ExceptionDemo5 { public static void main(String[] args) { // TODO Auto-generated method stub Demo d=new Demo(); try { int x=d.div(4, -1); System.out.println("x="+x); } catch(FuShuException e) { System.out.println(e.toString()); return; } finally { System.out.println("finally");//finally中存放的是一定会执行的代码 } System.out.println("Over"); } }
输出:
异常.Finally.FuShuException: 出现了除数为负数
finally
异常-处理语句其他格式
第一个格式:try { } catch() { }
第二个格式:
try { } catch() { }
finally
{
}
第三个格式:
try { } finally { }
异常-覆盖时的异常
子类在覆盖父类时,如果父类的方法抛出异常,那么子类的覆盖方法,只能抛出父类的异常,或者该异常的子类。如果父类方法抛出多个异常,那么子类在覆盖该方法时,只能抛出父类异常的子集
如果父类或者接口的方法中没有异常抛出,那么子类在覆盖方法时,也不可以抛出异常。
如果子类方法发生了异常,就必须要进行try处理,绝对不能抛。
package 异常.覆盖异常; class AException extends Exception { } class BException extends AException { } class CException extends Exception { } class Fu { void show()throws AException { } } class Zi extends Fu { void show()throws AException { } } public class ExceptionDemo7 { public static void main(String[] args) { // TODO Auto-generated method stub } }
异常总结
异常:是对问题的描述,将问题进行对象的封装。
异常体系:
Throwable
Error
Exception
-RuntimeException
异常体系的特点:
异常体系中的所有类以及建立的对象都具备可抛性。
也就是说可以被throw和throws关键字所操作。
只有异常体系具备这个特点。
throw和throws的用法:
throw定义在函数内,用于抛出异常对象。
throws定义在函数上,用于抛出异常类,可以抛出多个用逗号隔开。
当函数内有throw抛出异常对象,并未进行try处理。必须要在函数上声明,否则编译失败。
注意:RuntimeException除外。也就是说,函数内如果抛出RuntimeException异常,函数上可以不用声明。
如果函数声明了异常,调用者需要进行处理。处理方法可以throws可以try.
异常有两种:
编译时被检测异常
该异常在编译时,如果没有处理(没有抛也没有try),编译失败。
运行时异常(编译时不检测),
在编译时,不需要处理,编译器不检查。
该异常的发生,建议不处理,让程序停止。需要对代码进行修正。
包(package)
对类文件进行分类管理给类提供多层命名空间
卸载程序文件的第一行
类名的全程是 包名.类名
包也是一种封装形式
javac -d . PackageDemo.java
-d命令指定生成的class文件的存放目录。
.点号代表当前目录
关键词package
使用 package可以声明 该文件属于哪个包
package pack;//声明包名 public class Test{ public void show() { System.out.println("show"); } }
import关键词
通过import关键词可以简化类名的书写,import pack.*;//通过*通配符导入包中的所有类 import pack.pa.*;//导入子包中的类 class Demo { public static void main(String[] args) { Test t=new Test(); t.show(); } }
建议不要写通配符 * ,需要用到包中的哪个类,就导入哪个类。
jar包
Java的压缩包方便项目的携带
方便于使用,只要在classpath设置jar路径即可
数据库驱动,SSH框架等都是以jar包体现的
通过命令:
jar -cf 目标文件.jar 源文件目录1 源文件目录2
可以生成一个 目标文件.jar 包
-v参数,显示详细过程
jar -tf 目标文件.jar 显示jar包里的所有文件及目录
jar -xf 目标文件.jar 解压jar包中的文件
\Java\jdk1.6.0_43\lib\tools.jar
tools.jar\sun\tools\javac
存放了编译器javac的class文件
Java\jdk1.6.0_43\src.zip
存放了java所有类的源代码
相关文章推荐
- 【Eclipse教程】 eclipse快捷键大全
- spring 的 AOP详解
- Spring 解决编码问题-CharacterEncodingFilter
- Java for LeetCode 160 Intersection of Two Linked Lists
- 简单页面下载实例
- Java中特殊的String
- Mac下修改Android Studio 所用的JDK版本
- javac命令和jar命令
- JAVA WEB项目中文乱码问题解决方案
- Java 基本方法连接数据库并且执行查询,你发现这个会有什么问题吗
- java随笔
- java Properties工具
- 顺手笔记---javac,javap,javah
- Java反射机制详解。
- javax.crypto.IllegalBlockSizeException: Input length must be multiple of 16 when decrypting with padded cipher--转载
- Java语言描述:分支限界法之01背包问题
- Java for LeetCode 155 Min Stack
- Combination Sum III Leecode Java
- Java多线程用法解析
- java返回编码格式