java异常处理运行的截图_java 异常处理

一.动手动脑 运行AboutException.java示例,了解Java中实现异常处理的基础知识。

1)源代码

import javax.swing.*;classAboutException {public static voidmain(String[] a)

{double i=-1, j=0, k;

k=i/j;try{

k= i/j; //Causes division-by-zero exception//throw new Exception("Hello.Exception!");

}catch( ArithmeticException e)

{

System.out.println("被0除. "+e.getMessage());

}catch(Exception e)

{if (e instanceofArithmeticException)

System.out.println("被0除");else{

System.out.println(e.getMessage());

}

}finally{

JOptionPane.showConfirmDialog(null,"OK "+k);//JOptionPane.showInternalConfirmDialog(null, k);

}

}

}

2)结果截图

823b8b6e0c84c59472dacd95616ba4c0.png

3)结果分析

当删去第一个k=i/j;结果正常运行,异常检测代码运用:

Try{//可能发生运行错误的代码;

}catch(异常类型 异常对象引用){//用于处理异常的代码

}finally{//用于“善后” 的代码(释放)

}

二.使用Java异常处理机制

•把可能会发生错误的代码放进try语句块中。

•当程序检测到出现了一个错误时会抛出一个异常对象。异常处理代码会捕获并处理这个错误。catch语句块中的代码用于处理错误。

•当异常发生时,程序控制流程由try语句块跳转到catch语句块。

•不管是否有异常发生,finally语句块中的语句始终保证被执行。

•如果没有提供合适的异常处理代码,JVM将会结束掉整个应用程序。

三.动手动脑  多层的异常捕获

1)源代码

public classCatchWho {public static voidmain(String[] args) {try{try{throw new ArrayIndexOutOfBoundsException(); //数组下标越界

}catch(ArrayIndexOutOfBoundsException e) {

System.out.println("ArrayIndexOutOfBoundsException" + "/内层try-catch");

}throw new ArithmeticException(); //算术异常

}catch(ArithmeticException e) { //算数异常

System.out.println("发生ArithmeticException");

}catch(ArrayIndexOutOfBoundsException e) { //数组下标越界

System.out.println( "ArrayIndexOutOfBoundsException" + "/外层try-catch");

}

}

}

2)结果截图

fd06352b1b691d645b54fdf1cb68fd7f.png

3)结果分析

try的嵌套模式:处理内部try,抛出异常并接受处理。第一次处理完毕后,抛出第二次异常 处理第二次。

四.动手动脑  多层的异常捕获(2)

1)源代码

public classCatchWho2 {public static voidmain(String[] args) {try{try{throw newArrayIndexOutOfBoundsException();

}catch(ArithmeticException e) {

System.out.println("ArrayIndexOutOfBoundsException" + "/内层try-catch");

}throw newArithmeticException();

}catch(ArithmeticException e) {

System.out.println("发生ArithmeticException");

}catch(ArrayIndexOutOfBoundsException e) {

System.out.println("ArrayIndexOutOfBoundsException " + "/外层try-catch");

}

}

}//抛出与接收一应一答

2)结果截图

8d0a7496cd644016cc1cd6b498467401.png

五.动手动脑  当有多个嵌套的try…catch…finally时,要特别注意finally的执行时机。

1)源代码

public classEmbededFinally {public static voidmain(String args[]) {intresult;try{

System.out.println("in Level 1");try{

System.out.println("in Level 2");//result=100/0;//Level 2

try{

System.out.println("in Level 3");

result=100/0; //Level 3

}catch(Exception e) {

System.out.println("Level 3:" +e.getClass().toString());

}finally{

System.out.println("In Level 3 finally");

}//result=100/0;//Level 2

}catch(Exception e) {

System.out.println("Level 2:" +e.getClass().toString());

}finally{

System.out.println("In Level 2 finally");

}//result = 100 / 0;//level 1

}catch(Exception e) {

System.out.println("Level 1:" +e.getClass().toString());

}finally{

System.out.println("In Level 1 finally");

}

}

}

2)结果截图

870843d3181a4bee1b54317c6694e7a6.png

3)结果分析

当有多个嵌套的try…catch…finally时,异常在不同位置被接受,可能会导致异常下面的finally语句块执行顺序。

六.动手动脑  finally语句块一定会执行吗?

1)源程序

public classSystemExitAndFinally {public static voidmain(String[] args)

{try{

System.out.println("in main");throw new Exception("Exception is thrown in main");//System.exit(0);

}catch(Exception e)

{

System.out.println(e.getMessage());

System.exit(0);

}finally{

System.out.println("in finally");

}

}

}

2)结果截图

ff73915879308ae4626c4f337edd9ea1.png

3)结果分析

当图中System.exit(0);被执行时,结束程序,不再执行下面的finally.

七.动手动脑

编写一个程序,此程序在运行时要求用户输入一个 整数,代表某门课的考试成绩,程序接着给出“不及格”、“及格”、“中”、“良”、“优”的结论。

要求程序必须具备足够的健壮性,不管用户输入什 么样的内容,都不会崩溃。

import java.util.*;public classScore {static Scanner in=newScanner(System.in);public static voidmain(String[] args){

System.out.println("输入成绩:");

judge();

}public static voidjudge(){int n=-1;while(n<0||n>100){try{

n=in.nextInt();

}catch(InputMismatchException e){

System.out.println("格式错误!重新输入!");

in.nextLine();

}if(n>=0&&n<60)

System.out.println("不合格!");else if(n>=60&&n<70)

System.out.println("合格!");else if(n>=70&&n<80)

System.out.println("中!");else if(n>=80&&n<90)

System.out.println("良!");else if(n>=90&&n<=100)

System.out.println("优!");else if(n>100)

System.out.println("输入成绩不符");

}

}

}

2)结果截图

3fd7a458aff3177d023e47dd1d952d4f.png

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值