黑马程序员技术交流社区
标题:
如何自定义异常类
[打印本页]
作者:
ozt6719393
时间:
2013-5-22 17:26
标题:
如何自定义异常类
如何自定义异常类
作者:
余威宏
时间:
2013-5-22 18:16
自定义异常 :
一般有以下几个步骤:
一:创建一个类继承于Throwable或其子类;
二:添加构造方法;
三:在一个方法中使用throw抛出异常
四:在另一个方法中捕获并处理异常
举个例子,算术错误,除数不能为零的自定义异常:
class MyArithmeticException extends ArithmeticException{
public MyArithmeticException(){
public MyArithmeticException(String errorDescription){
super(errorDescription);
}
}
}
public static int divide(int a,int b) throws MyArithmeticException{
int result;
if (b==0)
throw new MyArithmeticException("divide by zero");
else result=a/b;
return result;
}
public static void main(String args[ ]) {
try{ divide(10,0);
}
catch(userException e) {
e.printStackTrace();
}
}
作者:
高波
时间:
2013-5-22 20:27
package exception;
/*
* 因为项目中会出现特有的问题,而这些问题并没有被java所描述并封装对象。
* 所以对这些特有问题可以按照java的对问题封装思想,将特有的问题,进行自定义的异常封装。
*
* 自定义异常:
* 假定需求:在本程序中,对于除数是负数,也视为是错误的是无法进行运算的。
* 那么就要对这个问题进行自定义的描述。
* 自定义异常java没有描述不能自动抛出,只能手动抛出。
*
* 当在函数内部出现throw抛出异常对象,那么必须要给出对应的处理动作。
* --要么在内部try catch处理
* --要么在函数上声明让调用者处理
*
* 一般情况,在函数内出现异常,函数上需要声明。
*
* 发现打印的结果中只有异常的名称,却没有异常的信息:因为自定义的异常并没有定义信息。
* 如何定义异常信息呢?
* 因为父类中已经把异常信息的操作都完成了。所以子类只要在构造时,通过super语句将异常信息传递给父类
* 那么就可以直接通过getMessage方法获取自定义的异常信息了。
*
* 自定义异常:
* 必须是自定义继承Exception
*
* 继承Exception原因:
* 异常体系有一个特点:因为异常类和异常对象都被抛出。
* 他们都具备可抛性。这个可抛性是Throwable这个体系中独有的特点。
* 只有这个体系中的类和对象才可以被throws和throw操作。
*
* throws和throw的区别:
* --throws使用在函数上。
* --throw使用在函数内。
*
* throws后面跟的异常类。可以跟多个。用逗号隔开。
* throw后面跟的是异常对象。
*/
@SuppressWarnings("serial")
class FuShuException extends Exception {
@SuppressWarnings("unused")
private String msg;
private int value;
// FuShuException(String msg) {
// this.msg = msg;
// }
//
// public String getMessage() {
// return msg;
// }
FuShuException(String msg, int value) {
super(msg);
this.value = value;
}
public int getvalue() {
return value;
}
}
class DivDemo {
int div(int a, int b) throws FuShuException {
if (b < 0)
throw new FuShuException("出现了除数是负数的情况 / by FuShu", b);// 手动通过throw关键字抛出一个自定义异常
return a / b;
}
}
public class SelfDefineException {
public static void main(String[] args) {
DivDemo dd = new DivDemo();
try {
int x = dd.div(4, -1);
System.out.println("x=" + x);
} catch (FuShuException e) {
System.out.println(e.toString());
// System.out.println("除以负数了");
System.out.println("出现异常的数是: " + e.getvalue());
}
System.out.println("over");
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2