Java基础(basis)-----异常与错误处理
Posted fengfuwanliu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java基础(basis)-----异常与错误处理相关的知识,希望对你有一定的参考价值。
1.编译型异常和运行时异常
编译时异常是指程序正确 而由外界条件不满足而产生的异常 java 中要求必须去捕捉住这类异常 不然无法通过编译
运行时异常是指程序存在着bug 如空指针异常 数组下标越界 都属于 运行时异常
2.Error和Exception
Exception:是程序本身可以处理的异常
Error:是程序无法处理的错误,这些错误标识故障发生于虚拟机自身或者发生在虚拟机试图执行应用时,一般不需要程序处理,例如:内存空间不足,栈溢出
3.throws 在方法的声明处,显式的抛出该异常对象的类型
package com.exception; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; /** * throws 在方法的声明处,显式的抛出该异常对象的类型 * 不推荐 * @author yyx 2019年8月18日 */ public class ExceptionThrows public static void main(String[] args) throws FileNotFoundException, IOException String filepath = "D:" + File.separator + "exception.txt"; FileOutputStream fos = new FileOutputStream(filepath); String content = "今天是2018/4/8,天气很好"; byte[] array = content.getBytes(); fos.write(array); fos.close();
4.throw 在方法内抛出异常对象
自定义异常对象只有抛出后才能被catch
package com.exception; /** * throw 在方法内抛出异常对象 不推荐 * * @author yyx 2019年8月18日 */ public class ExceptionThrow public static void main(String[] args) try int i = 3; if (i > 4) System.out.println("恭喜你,答对了!"); else throw new MyException("对不起,算数错误"); catch (Exception e) System.out.println(e.getMessage()); class MyException extends Exception private static final long serialVersionUID = 1L; public MyException(String msg) super(msg);
5.try.....catch....finally......
finally里面的代码无论是否出现异常都会执行
package com.exception; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; /** * 推荐 * @author yyx * 2019年8月18日 */ public class ExceptionTryCatch public static void main(String[] args) String filepath = "D:" + File.separator + "exception.txt"; FileOutputStream fos = null; try fos = new FileOutputStream(filepath); String content = "今天是2018/4/8,天气很好"; byte[] array = content.getBytes(); fos.write(array); catch (IOException e) e.printStackTrace();// 一般此处写入日志 finally if (fos != null) try fos.close(); catch (IOException e) e.printStackTrace(); ReturnExceptionDemo reDemo=new ReturnExceptionDemo(); try reDemo.methodA(); catch (Exception e) System.out.println(e.getMessage()); int i = reDemo.methodB(); System.out.println(i); class ReturnExceptionDemo void methodA() try System.out.println("进入方法A"); throw new RuntimeException("制造异常"); finally System.out.println("用A方法的finally"); int methodB() try System.out.println("进入方法B"); return 1; finally System.out.println("调用B方法的finally"); return 2;
6.throws和throw的区别
- 位置不同:throws用在函数上,后面跟的是异常类,可以跟多个;而throw用在函数内,后面跟的是异常对象
- 功能不同:throws用来声明异常,让调用者只知道该功能可能出现的问题,可以给出预先的处理方式;throw抛出具体的问题对象
- throws表示出现异常的一种可能性,并不一定会发生这些异常;throw则是抛出了异常,执行throw则一定抛出了某种异常对象
- 两者都是消极处理异常的方式(这里的消极并不是说这种方式不好),只是抛出或者可能抛出异常,但是不会由函数去处理异常,真正的处理异常由函数的上层调用处理
以上是关于Java基础(basis)-----异常与错误处理的主要内容,如果未能解决你的问题,请参考以下文章