Exception(异常类)
-
java异常结构中定义有Throwable, Exception和 Error是其派生的两个子类。其中Exception表示由于网络故障,文件损坏,设备错误,用户输入非法等情况导致的异常,而Error表示java运行时环境出现的错误,例如jvm内存资源耗尽。
-
异常出来就是当异常发生的时候妥善地终止程序,避免灾难性后果的发生,具体的操作通常
-
包括:
-
通知:向用户通知异常的发生。
-
恢复:保存重要的数据,恢复文件,回滚事务等
-
退出:以更好的方式结束程序的运行
异常捕获:try.... catch
try:
尝试执行代码块,如果有异常,就执行catch语句块。如果没有异常,就跳过catch。
catch语句块:
应该先捕获小类型的异常,或捕获大类型的异常。
执行完之后,继续执行程序后续代码;提示程序员自己,具体是什么异常,我们就可以参考这个异常,修改程序;多个catch,只会执行其中的一个catch语句块,先捕获子异常类型,再捕获父的异常类型,
抛出异常---throw语句:
使用throw主动抛出某个异常类型,定义方法的时候,可以选择使用throw抛出异常。 throw new xxx,一次只能throws一个,可以抛出多个异常
public static void main(String[] args) { try { String s=null; s.length(); }catch (NullPointerException e){ System.out.println(e.getMessage()); } throw new NullPointerException();//抛出异常 System.out.println("5464");//编译错误。throw之后的代码不能执行到。 }
finally语句块:
不管try抛不抛异常,都要执行。
int a=10; try { int k=1; int m=10/k; a++ ; return a; }catch (ArithmeticException e){ a++; return a; }finally { a++; return a; }
如果没有finally,程序这里就结束了。但是这里有finally,就必须执行finally代码块
自定义异常的使用
主要使用super()调用父类的构造器函数,使用super,方法名调用父类的方法 编译时异常(编译的时候,就需要处理这个异常)
class GenderException extends Exception{ public GenderException(){ } public GenderException(String msg){ super(msg);//调用父类的构造器函数 } //2.重写普通方法 @Override public String getMessage() { return super.getMessage();//调用父类的方法 } @Override public void printStackTrace() { System.out.println("my..........."); super.printStackTrace();//调用父类的方法 } }
重写的异常处理
如果父类的方法抛出了异常,那么子类重写父类的时候,异常可以如下处理:
-
不处理异常(重写的时候,不抛出异常)
-
可以只抛出部分异常
-
可以抛出异常的子异常
-
抛出其他运行时异常
但是不可以如下操作:
-
重写的时候抛出父类方法没有抛出的非运行时异常
-
重写的时候抛出父类没有抛出的Exception
File(文件或目录)
java.io.File用于表示文件(目录),程序员可以通过File类在程序中操作硬盘上的文件或目录。
File类只用于表示文件(目录)的信息(大小,名称等),不能对文件内容进行访问构造函数:File(String path)
常用方法:file.isDirectory() 是否是文件夹;file1.isFile()是否是文件;file1.getName() 文件名;file1.getAbsolutePath()文件绝对路径;file1.canRead() 读;file1.canWrite() 写;file1.canExecute() 执行