- 自定义异常,需要继承Exception类或其子类
—继承自Exception,类就变成checked
—继承自RuntimeExcpetion,变成Unchecked
- java自定义异常,采用throw抛出
看下面的代码
package 除法异常;
/*
* 抛出异常的不同类型,决定编译器是否检查
*/
public class App {
public int divide(int x,int y)
{
return x/y;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
}
public int divide2(int x,int y)
{
int result;
try {
result=x/y;
System.out.println(result);
}
catch(ArithmeticException ex)
{
System.out.println(ex.getMessage());
return 0;
}
catch(Exception ex)
{
System.out.println(ex.getMessage());
return 0;
}
return result;
}
public int divide3(int x,int y) throws ArithmeticException
{
return x/y;
}
public int divide4(int x,int y)
{
//return divide3(x,y);//这里可以成功,因为divide3是unchecked
return divide5(x,y);//这是错误的,因为它是checked
}
public int divide5(int x,int y) throws DivideException
{
try {
if(y<0)
{
throw new DivideException("error",y);
}
return divide3(x,y);
}
catch(ArithmeticException ex)
{
ex.printStackTrace();
return 0;
}
}
}
package 除法异常;
public class DivideException extends Exception{
private int divisor;
public DivideException(String msg,int div)
{
super(msg);
this.divisor=div;
}
public int getDivisor()
{
return divisor;
}
}