JAVA自定义异常

对于java中的异常,相信大家都不会陌生,常见的异常有:

1、NullPointException,空指针异常

2、ClassCastException:类型强制转化异常

3、ArrayIndexOutBoundsException:数组下标越界异常

4、ArithmeticException:算数异常

5、SecurityException:违背安全异常

6、NumberFormatException:字符串转换为数字异常

7、FileNotFounfException:文件为找到异常

8、SQLException:数据库操作异常

9、NoSuchMethodException:为找到此方法异常

10、IOException:输入输出流异常

异常中的try,catch,throw,throws,finally处理方法,相信都能很好理解,下面我重点来说自定义异常了。

为什么需要自定义异常?

1、项目分模块开发时自定义异常类可以统一对外展示异常;

2、自定义异常可以继承相关的异常来抛出处理后的异常信息,从而隐藏底层的异常,这样更加安全直观,便与精确查查找异常信息,快速解决异常。

自定义异常类MyException的具体步骤:一、继承Exception

package test;

import java.io.PrintStream;
import java.io.PrintWriter;

public class MyException extends Exception {

	private static final long serialVersionUID = 1L;		

	/**
	 * 重载构造函数
	 */
	public MyException() {
		super();
	}
	
	public MyException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
		super(message, cause, enableSuppression, writableStackTrace);
	}

	public MyException(String message, Throwable cause) {
		super(message, cause);
	}

	public MyException(Throwable cause) {
		super(cause);
	}
	
	public MyException(String message) {
		super(message);
	}

	/**
	 * 重写父类的方法
	 */
	@Override
	public String getMessage() {
		return super.getMessage();
	}
	
	@Override
	public String getLocalizedMessage() {
		// TODO Auto-generated method stub
		return super.getLocalizedMessage();
	}

	@Override
	public void printStackTrace() {
		// TODO Auto-generated method stub
		super.printStackTrace();
	}

	@Override
	public void printStackTrace(PrintStream s) {
		// TODO Auto-generated method stub
		super.printStackTrace(s);
	}

	@Override
	public void printStackTrace(PrintWriter s) {
		// TODO Auto-generated method stub
		super.printStackTrace(s);
	}

	@Override
	public StackTraceElement[] getStackTrace() {
		// TODO Auto-generated method stub
		return super.getStackTrace();
	}

	@Override
	public void setStackTrace(StackTraceElement[] stackTrace) {
		// TODO Auto-generated method stub
		super.setStackTrace(stackTrace);
	}	
}

使用MyException异常类:

package test;
public class Test2 {
	
	public StringBuffer getNumber(Long a) throws MyException {
		StringBuffer stringBuffer = new StringBuffer();
		if(a<0 || a>99999) {
			throw new MyException("输入数字范围不正确");
		}				
		if(a/10000 >0 ) {
			stringBuffer.append(a/10000);
		}
		if((a/1000)%10 >0) {
			stringBuffer.append((a/1000)%10);
		}
		if((a/100)%10 >0) {
			stringBuffer.append((a/100)%10);
		}
		if((a/10)%10 >0) {
			stringBuffer.append((a/10)%10);
		}
		if(a%10 >0) {
			stringBuffer.append(a%10);
		}		
		return stringBuffer.reverse();
	}
		
	
	public static void main(String[] args) throws MyException {
		Test2 test2 = new Test2();
		StringBuffer aString = test2.getNumber(123456L);//输入的数值超100000,抛出异常
		System.out.println(aString);
	}
}

控制台输出:


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值