class FuShuException extends Exception
{
FuShuException()
{
super();
}
FuShuException( String msg)
{
super(msg);
}
}
class Demo
{
int div(int a , int b)throws FuShuException
{
if (b<0)
throw new FuShuException();//手动通过throw关键字抛出一个自定义异常对象"出现了除数为负数"
return a/b;
}
}
class ExceptionDemo3
{
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.toString());
System.out.println("除数为负数");
}
System.out.println("over");
}
}
--------------------------------------------------------------------------------
class Demo
{
int div(int a , int b)//throws
{
if(b==0)
throw new ArithmeticException("被零除了");
return a/b;
}
}
class ExceptionDemo4
{
public static void main(String[] args)
{
Demo d = new Demo();
int x = d.div(4,0);
System.out.println("x="+x);
System.out.println("over");
}
}
函数内部抛出异常,但在函数上并没有声明异常,仍然编译通过,并且正常运行。
而如果将红色部分改为Exception("被零除了"); 编译就失败了。
显示:
ExceptionDemo4.java:6: 未报告的异常 java.lang.Exception;必须对其进行捕捉或声明
以便抛出
throw new Exception("被零除了");
^
1 错误
这是怎么回事 |