Java系统中异常封装处理

异常处理

自定义异常基础类

package com.cloud.exception;
/**
 * 构建一个基础的异常类
 */
public class DefineException extends RuntimeException{
   //VersionUID
   private static final long serialVersionUID = 3042686055658047285L;
   //错误位置
   protected String positionName;
   //错误标签
   protected String errorLabel;
   //错误信息
   protected String message = "";
   public String getMessage(){
      return message;
   }
   //封装属性
   public void setNameAndMessage(String errorLabel,String message){
      this.errorLabel = errorLabel;
      this.message = message;
   }
   public void setPositionName(String positionName) {
      this.positionName = positionName;
   }
 
   public void setErrorLabel(String errorLabel) {
      this.errorLabel = errorLabel;
   }
 
   public void setMessage(String message) {
      this.message = message;
   }
   public String getErrorLabel(){
      return this.errorLabel;
   }
   public String getPositionName(){
      return this.positionName;
   }
   //参照Throwable源码的几个构造方法
   public DefineException(){
      super();
   }
   public DefineException(Throwable throwable){
      super(throwable);
   }
   public DefineException(String errorLabel){
      super(errorLabel);
      this.errorLabel = errorLabel;
      this.message = errorLabel;
   }
   public DefineException(String positionName,String errorLabel){
      super(errorLabel);
      this.errorLabel = errorLabel;
      this.positionName = positionName;
      this.message = errorLabel;
   }
   public DefineException(String positionName,Throwable throwable){
      super(throwable);
      this.positionName = positionName;
   }
   public DefineException(String positionName,String errorName,Throwable throwable){
      super(throwable);
      this.errorLabel = errorName;
      this.positionName = positionName;
      this.message = errorName;
   }
}

扩展异常类

package com.cloud.exception;
/**
 * 扩展一个自己使用的异常类
 */
public class MyException extends DefineException{
   private static final long serialVersionUID = -3042686055658047285L;
   public MyException(){}
   public MyException(Throwable throwable){
      super(throwable);
   }
   public MyException(String positionName,String errorLabel){
      super(positionName, errorLabel);
   }
   public MyException(String errorLabel){
      super(errorLabel);
   }
   public MyException(String positionName,Throwable throwable){
      super(positionName, throwable);
   }
   public MyException(String positionName,String errorLabel,Throwable throwable){
      super(positionName, errorLabel, throwable);
   }
}

异常处理原则

package com.cloud.Test;
import com.cloud.exception.MyException;
/**
 * 异常处理原则:
 * 1.如果不能处理异常,不要捕获该异常。
 * 2.如果要捕获,应在离异常源近的地方捕获它。
 * 3.不要捕获的异常,但是什么也不处理。
 */
public class Test4 {
	public static void main(String[] args) {
		MyExe mx = new MyExe();
		try {
			/*这里发生异常,则直接离开try代码进入catch*/
			//int i = 1/0;
			/*这个方法执行扔出的异常就不会被捕获*/
			mx.getI();
		}catch(MyException mp){
			String info = mp.getMessage();
			System.out.println("捕获自定义异常"+info);
		} catch (Exception e) {
			e.printStackTrace();
			System.out.println("捕获Exception异常");
		}
	}
}
class MyExe{
	public void getI(){
		MyException me = new MyException();
		try {
			int te = 2/0;
		} catch (MyException e) {
			me.setMessage("除数不能为0!");
			throw me;
		}catch (Exception e) {
			System.out.println("Exception异常");
			e.printStackTrace();
		}
	}
}
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值