【上机作业】【java】2010.4.14 异常处理
异常:java程序在运行时出现的错误,并非语法错误。
java如何进行异常处理
提供的系统类库
Error :java 系统进行处理
Exception:由程序员处理
java进行异常处理的方法
(1)try
{//可能有错误的代码
} catch(异常处理类 异常处理对象)
finaly{
//不管有无代码,都要执行的代码
}
例1:class Byzero
{
public static void main(String args[])
{int a=5,b=0;
try
{
a=a/b;
System.out.println(“a=”+a);
}catch(ArithmeticException e)
{ System.out.println(“分母不能为零”);
}
}
}
例2:
class ArrayExam
{ public static void main(String args[])
{int a[]=new int[10];
try
{
for(int i=0;i<=a.length;i++)
{a[i]=i;
}
}
catch(ArrayIndexOutOfBoundsException e)
{
System.out.println(“数组下标超界”);
}
}
}
(2)抛出异常throws(由方法抛出异常,谁调用该方法谁进行错误处理)
class Byzero
{
public void yunsuan() throws ArrayIndexOutOfBoundsException
{int a=5,b=0;
a=a/b;
System.out.println(“a=”+a);
}
public static void main(String args[])
{
try
{
Byzero b=new Byzero();
b.yunsuan();
}catch(ArithmeticException e)
{ System.out.println(“分母不能为零”);
}
}
}
(1)编写一程序,生成和捕获 ArrayIndexOutOfBoundsException(数组下标越界)类型的异常。
class ArrayTest{
char c[]={‘a’,’b’,’c’,’d’,’e’,’f’,’g’,’h’,’i’,’j’};
public void run()throws ArrayIndexOutOfBoundsException{
for(int i=0;i<=c.length;i++){
System.out.print(“c[“+i+”]=”+c[i]+”t”);
}
}
public static void main(String []args){
ArrayTest a=new ArrayTest();
try{
a.run();
}
catch(ArrayIndexOutOfBoundsException e){
System.out.println(“下标越界”);
}
}
}
(2)从键盘输入圆的半径,计算圆的面积和周长,有半径类型错误捕获的语句。
import java.text.DecimalFormat;
class RadiiException extends Exception{
}
class circle{
double radii;
circle(double r) throws RadiiException {
radii=r;
if(r<=0) throw new RadiiException();
}
void getgirth(){
DecimalFormat format=new DecimalFormat(“#.000”);
String newDouble = format.format(2*radii*3.14);
System.out.println(“周长为:”+newDouble);
}
void getarea(){
DecimalFormat format=new DecimalFormat(“#.000”);
String newDouble = format.format(radii*radii*3.14);
System.out.println(“周长为:”+newDouble);
}
public static void main(String []args){
System.out.println(“——圆(1)——-“);
try{
circle c1=new circle(5.2);
c1.getgirth();
c1.getarea();
}
catch(RadiiException e){
System.out.print(“半径需要大于0”);
}
System.out.println(“——————“);
System.out.println(“——圆(2)——-“);
try{
circle c2=new circle(-1);
c2.getgirth();
c2.getarea();
}
catch(RadiiException e){
System.out.println(“半径需要大于0”);
}
System.out.println(“——————“);
}
}