Java 异常处理机制

异常类型:
在这里插入图片描述
处理机制

1.Try Catch Finally

使用时注意事项:

Catch块必须时从小到大,从具体到抽象排列顺序,否则会编译错误,也就是说:如果有两个catch块,如果其中一个catch块的异常错误是另一个catch块的子类,那么小的也就是子类必须写在前面。
原因:catch捕获的异常时从上往下检测的,如果第一个catch块是父类的话,异常只会捕获父类的异常,因为父类的异常一定包括子类的异常,这样的话,子类的异常将会永远被屏蔽。

2. Throw异常

使用时注意事项:

throws使用在方法头的后面,不会加工处理,直接抛给调用她的函数,如果该异常在调用的函数中任然没有被处理,那么这个异常会沿着方法的调用,一直向上传递,一直到异常被处理,如果传到main方法中任然没有被处理,则该异常将把程序非正常终止。

3.自定义异常:

使用时注意事项:

throws与throw一起使用,

使用地方:

在某些应用中,编程人员可以根据程序的需要创建自己的异常类和异常对象,用来处理程序中特定的逻辑运行错误或遗产。比如说在计算三角形面积的时候,如果输入了负数或者输入的三个数不满足三角行,这个时候我们就需要指定针对这两种情况下的特定的异常。
自定义异常语法
举例

package Blog;

class TriangleUnequationException extends Exception {
	 String name;
     public TriangleUnequationException(String str)

     {
           name = str;
     }
    public String toString()

    {
           return name;
    }
}

package Blog;

public class TriangleMinusLengthException extends Exception {
	String name;
    public TriangleMinusLengthException(String str)

    {
             name = str;
    }
    public String toString()

   {
             return name;
   }
}

package Blog;

public class TestSelfException {
	public static double calculateArea(double a, double b, double c) throws TriangleMinusLengthException, TriangleUnequationException

    {
             if (a<0 || b<0 || c<0)
                     throw new TriangleMinusLengthException("负边长异常");
             if (a+b<c || a+c<b || b+c<a)
                     throw new TriangleUnequationException("不满足三角不等式异常");
            double p = (a+b+c)/2;
            return Math.sqrt(p*(p-a)*(p-b)*(p-c));
   }
  public static void main(String[] args)

  {
            double a = 3, b = 4, c = 5;
            double e = -4, f = 2, g =10000;
            try{
                      double area = calculateArea(a,b,c);
                      System.out.println("面积:" + area);
                      area = calculateArea(e, f, g);         
                     System.out.println("面积:" + area);
            }catch(TriangleMinusLengthException me){
                     System.out.println("边长为负,请改正");
            }catch(TriangleUnequationException ue){
                    System.out.println("边长不满足三角不等式,请改正!");
            }
}
}

运行结果
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值