1.自定义异常的意义:
尽管java虚拟机提供了各种的异常种类,但是面对多样的业务需求时我们自定义一些规则(例如年龄不能为负数),这时我们就需要来自定义一些异常。
自定义异常内容主要包括 1,自定义异常申明(必须继承系统原有的异常类,)
class FuShuException extends Exception //申明一个自定义异常 { FuShuException(String msg){ super(msg); } }2, 自定义异常信息的包装;(异常信息:分母不能为负)
if( b<0) throw new FuShuException("异常信息:分母不能为负")在产生异常时只有两种处理方法; 1. 使用try{ }catch{ }finlly{ }直接处理, 2. 使用throws throws 抛出,让上一级处理,
需要注意的是; 在某些情况时对抛出有限制; 比如在由继承关系时,子类只能抛出父类继承的异常,或者异常的子异常, 如果父类继承多个异常,那么子类只能抛出父类异常的子集。
如果父类没有抛出异常,那么子类也不能抛出异常,只能使用try{ }catch{ }在方法内直接处理。
finally{}; try{ }catch{ }finlly{ }中的finally{}中的程序是无论程序是否异常都会执行的语句,其作用为断开数据库等操作从而来释放资源,
在开发过程中因为要考虑程序的健壮性所以在catch完所有可能的异常后通常会加一个catch(Exception e)用于接受可能遗漏的异常。
下面是根据学习教程写的一个自定义异常练习。 //需求 分数中除了系统默认的分母不能为零外 再自定义一个分母不能为负的异常 FuShuException
public class ExceptionDemo { public static void main(String[] args) { Demo2 ex=new Demo2(); try{ int c= ex.div(4, -1); System.out.println("c="+c); }catch(FuShuException e) { System.out.println(e.toString()); System.out.println("除数出现负数啦~~"); } System.out.println("程序结束"); } } class Demo2{ int div(int a,int b) throws FuShuException{ /*thorws 用来接收throw抛出的异常*/ if( b<0) throw new FuShuException("异常信息:分母不能为负")//新建一个自定义异常类并且赋予异常信息。 return a/b; } } class FuShuException extends Exception //申明一个自定义异常 { FuShuException(String msg){ super(msg); } }