java异常语句_Java基本功练习十八(异常处理【获取异常信息、链式异常和finally语句、自定制异常】)...

在程序运行中,如果环境检测出一个不可能执行的操作,就会出现运行时错误(runtime error)。例如:

越界错误ArrayIndexOutOfBoundsException。

文件不存在错误FileNotFoundException等等。

Java中,异常会导致运行时错误。异常就是一个表示阻止执行正常进行的错误或情况。如果异常没有被处理,那么程序将会非正常终止。

应该处理这个异常,以便使得程序可以继续运行或平稳终止。

范例一:异常处理的创建、抛出、捕获以及处理异常。

运行效果如图所示:

实现的源代码如下:

package Blog;

public class blogTryProject{

//获取异常的信息

public static void main(String[]args){

try{

System.out.println(sum(new int[]{1,2,3,4,5}));

}

catch(Exception ex){

ex.printStackTrace();

System.out.println("\n"+ex.getMessage());

System.out.println("\n"+ex.toString());

System.out.println("\nTrace Info Obtained form getStackTrace");

StackTraceElement[] traceElements = ex.getStackTrace();

for(int i = 0;i < traceElements.length;i++){

System.out.print("method "+traceElements[i].getMethodName());

System.out.print("("+traceElements[i].getClassName()+":");

System.out.println(traceElements[i].getLineNumber()+")");

}

}

}

private static int sum(int[] list){

int result = 0;

for(int i = 0;i <= list.length;i++)

result += list[i];

return result;

}

}

主要有三个异常,ArithmeticException、FileNotFoundException和InputMismatchException在Java API中有很多预定义的异常类,如下图所示:

范例二:链式异常和finally语句。

运行效果如图所示:

实现的源代码如下所示:

package Blog;

public class blogTryProject{

public static void main(String[]args){

//链式异常

ChainedExceptionDemo ced = new ChainedExceptionDemo();

ced.main(args);

//finally语句演示

FinallyDemo fd = new FinallyDemo();

fd.main(args);

}

}

//链式异常

class ChainedExceptionDemo{

public static void main(String[]args){

try{

method1();

}

catch(Exception ex){

ex.printStackTrace();

}

}

public static void method1()throws Exception{

try{

method2();

}

catch(Exception ex){

throw new Exception("New info from method1,",ex);

}

}

public static void method2()throws Exception{

throw new Exception("New info from method2");

}

}

//finally语句演示

class FinallyDemo{

public static void main(String[]args){

java.io.PrintWriter output = null;

try{

output = new java.io.PrintWriter("text.txt");

output.println("Welcome to Java");

}

catch(java.io.IOException ex){

ex.printStackTrace();

}

finally{

if(output != null) output.close();

}

System.out.println("End of program");

}

}

范例三:自定制异常。

运行效果如图所示:

实现的源代码如下所示:

package Blog;

public class blogTryProject{

public static void main(String[]args){

System.out.println("\n自定制异常");

try{

Circle c = new Circle();

c.setRadius(-5);

}

catch(InvalidRadiusException ex){

System.out.println("The invalid radius is "+ex.getRadius());

}

}

}

//自定制异常

class InvalidRadiusException extends Exception{

private double radius;

public InvalidRadiusException(double radius) {

super("Invalid radius "+radius);

this.radius = radius;

}

public double getRadius(){

return radius;

}

}

//带半径异常的圆类自定义异常

class Circle{

private double radius;

private static int numberOfObjects = 0;

public Circle(){

this(1.0);

}

public Circle(double newRadius){

this.radius = newRadius;

//        setRadius(newRadius);

numberOfObjects++;

}

public double getRadius(){

return radius;

}

public void setRadius(double newRadius)throws InvalidRadiusException{

if(newRadius >= 0)

radius = newRadius;

else

throw new InvalidRadiusException(newRadius);

}

public static int getNumberOfObjects(){

return numberOfObjects;

}

public double findArea(){

return radius * radius * Math.PI;

}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值