黑马程序员技术交流社区
标题:
自定义异常
[打印本页]
作者:
linder_qzy
时间:
2015-3-10 16:01
标题:
自定义异常
项目中会出现一些Java中没有定义的异常,对于这些异常可以按照Java对问题封装的思想将特有问题进行自定义异常封装。
自定义异常必须继承Exception。
下边写一个例子说明如何自定义异常。
class FuShuException extends Exception
{
/*
如何定义异常信息:因为父类中已经把异常信息的操作都完成了。所以子类只要在构造时将异常信息传递给父类通过super语句,
那么就可以直接通过getMessage()方法获取自定义的异常信息。
*/
private int value;
FuShuException(String msg,int value)
{
super(msg);
this.value = value;
}
public int getValue(){
return value;
}
}
/*
当在函数内部出现了throw抛出异常对象,那么就必须要给对应的处理动作。要么在内部try catch处理,要么在函数上声明让调用者处理。
一般情况下,函数内出现异常,函数上需要声明。
throw和throws的区别:
1.throw使用在函数内,后跟异常对象;
2.throws使用在函数上,后跟异常类,可以是多个,用逗号隔开。
*/
class Demo
{
int div(int a,int b)throws FuShuException
{
if (b<0)
throw new FuShuException("除数为负数了!!",b);//手动通过throw关键字抛出异常
return a/b;
}
}
class DemoExceptionUserDefined
{
public static void main(String[] args)
{
Demo d = new Demo();
try
{
int x = d.div(4,-1);
System.out.println("x="+x);
}
catch (FuShuException e)
{
System.out.println("负数为"+e.getValue());
e.printStackTrace();//打印异常名称:异常信息:异常出现的位置(其实JVM默认的异常处理机制就是调用printStackTrace跟踪异常信息)
}
System.out.println("over!");
}
}
/*
* 输出结果
* 错误的除数为-1
heima.day01.FuShuException: 除数为负数了!!
at heima.day01.DemoExceptionUserDefined.div(DemoExceptionUserDefined.java:30)
at heima.day01.DemoExceptionUserDefined.main(DemoExceptionUserDefined.java:19)
over!!
*/
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2