java程序设计基础_陈国君版第五版_第九章例题
/**
* 本测例会产生一个数组越界异常
* @author Richard
*
*/
public class Main9_1 {
public static void main(String[] args){
int i;
int[] a ={1,2,3,4};
for(i=0;i<5;i++)
System.out.println("a["+i+"]="+a[i]);
System.out.println("5/0 "+(5/0));
}
}
public class Main9_2 {
public static void main(String[] args)
{
int i ;
int[] a = {1,2,3,4};
for(i=0;i<5;i++)
{
try
{
System.out.print("a["+i+"]/"+i+"="+(a[i]/i));
}
catch(ArrayIndexOutOfBoundsException e)
{
System.out.print("捕获到了数组下标越界异常");
}
catch(ArithmeticException e)
{
System.out.print("异常类名称是:"+e);
}
catch(Exception e)
{
System.out.println("捕获"+e.getMessage()+"异常!");
}
finally
{
System.out.println("\tfinally\ti="+i);
}
}
System.out.println("继续");
}
}
public class Main9_3 {
public static void main(String[] args)
{
int a = 5,b = 0;
try
{
if(b==0)
throw new ArithmeticException();
else
System.out.println(a+"/"+b+"="+a/b);
}
catch(ArithmeticException e)
{
System.out.println("异常:"+e+"被抛出了!");
e.printStackTrace();
}
}
}
public class Main9_4 {
public static double multi(int n)
{
if(n<0)
throw new IllegalArgumentException();
double s = 1;
for(int i = 1;i<=n;i++) s = s*i;
return s;
}
public static void main(String[] args)
{
try
{
int m = Integer.parseInt(args[0]);
System.out.println(m+"!="+multi(m));
}
catch(ArrayIndexOutOfBoundsException e)
{
System.out.println("命令行中没提供参数!");
}
catch(NumberFormatException e)
{
System.out.println("应输入一个【整数】!");
}
catch(IllegalArgumentException e)
{
System.out.println("出现的异常:"+e.toString());
}
finally
{
System.out.println("程序运行结束!!");
}
}
}
public class Main9_5 {
static void check(String str1)throws NullPointerException{
if(str1.length()>2)
{
str1 = null;
System.out.println(str1.length());
}
char ch;
for(int i = 0; i < str1.length();i++)
{
ch = str1.charAt(i);
if(!Character.isDigit(ch))
throw new NumberFormatException();
}
}
public static void main(String[] args)throws Exception
{
int num;
try
{
check(args[0]);
num = Integer.parseInt(args[0]);
if(num > 60)
System.out.println("成绩为:"+num+"\t及格");
else
System.out.println("成绩为:"+num+"\t不及格");
}
catch(NullPointerException e)
{
System.out.println("空指针异常:"+e.toString());
}
catch(NumberFormatException ex)
{
System.out.println("输入的参数不是数值类型");
}
catch(Exception e)
{
System.out.println("命令行中没有提供参数");
}
}
}
import java.io.*;
public class Main9_6 {
public static void main(String[] args)throws IOException{
String str;
BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));
while(true)
{
try
{
System.out.println("请输入字符串:");
str = buf.readLine();
if(str.length()>0)
break;
else
throw new IOException();
}
catch(IOException e)
{
System.out.println("必须输入字符串");
}
}
String s = str.toUpperCase();
System.out.println("转换后的字符串为:"+s);
}
}
class CircleException extends Exception
{
double radius;
CircleException(double r)
{
radius = r;
}
public String toString()
{
return "半径 r = "+ radius + "不是一个正数";
}
}
class Circle
{
private double radius;
public void setRadius(double r)throws CircleException
{
if(r<0)
throw new CircleException(r);
else
radius = r;
}
public void show()
{
System.out.println("圆面积 = "+3.14*radius*radius);
}
}
public class Main9_7 {
public static void main(String[] args){
Circle cir = new Circle();
try
{
cir.setRadius(-2.0);
}
catch(CircleException e)
{
System.out.println("自定义异常:"+e.toString());
}
cir.show();
}
}