java-10异常处理动手动脑
1.请阅读并运行AboutException.java示例,然后通过后面的几页PPT了解Java中实现异常处理的基础知识。
import javax.swing.*;
class AboutException {
   public static void main(String[] a)
   {
      int 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 instanceof ArithmeticException)
            System.out.println("被0除");
        else
        {
            System.out.println(e.getMessage());
        }
    }
    finally
     {
             JOptionPane.showConfirmDialog(null,"OK");
     }
  }
}

把可能会发生错误的代码放进try语句块中。 当程序检测到出现了一个错误时会抛出一个异常对象。异常处理代码会捕获并处理这个错误。 catch语句块中的代码用于处理错误。 当异常发生时,程序控制流程由try语句块跳转到catch语句块。 不管是否有异常发生,finally语句块中的语句始终保证被执行。
2.阅读以下代码(CatchWho.java),写出程序运行结果:
public class CatchWho {
    public static void main(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");
        }
    }
}

写出CatchWho2.java程序运行的结果:
public class CatchWho2 {
    public static void main(String[] args) {
        try {
                try {
                    throw new ArrayIndexOutOfBoundsException();
                }
                catch(ArithmeticException 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");
        }
    }
}

当有多层嵌套的finally时,异常在不同的层次抛出 ,在不同的位置抛出,可能会导致不同的finally语句块执行顺序。
3.辨析:finally语句块一定会执行吗?
public class SystemExitAndFinally {
    public static void main(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");
        }
    }
}

因此finally语句不一定执行
4.如何跟踪异常的传播路径?
// UsingExceptions.java
// Demonstrating the getMessage and printStackTrace
// methods inherited into all exception classes.
public class PrintExceptionStack {
public static void main( String args[] )
{
try {
method1();
}
catch ( Exception e ) {
System.err.println( e.getMessage() + "\n" );
e.printStackTrace();
}
} public static void method1() throws Exception
{
method2();
} public static void method2() throws Exception
{
method3();
} public static void method3() throws Exception
{
throw new Exception( "Exception thrown in method3" );
}
}

当程序中出现异常时,JVM会依据方法调用顺序依次查找有关的错误处理程序。
每个Throwable类的对象都有一个getMessage方法,它返回一个字串,这个字串是在Exception构造函数中传入的,通常让这一字串包含特定异常的相关信息。
5.成绩:
import java.util.Scanner;
class judgeException extends Exception{
    public judgeException(String s){
        super(s);
    }
}
class judgeException2 extends Exception{
    public judgeException2(String s){
    super(s);
    }
}
public class Test {
    public static void main(String[] args) {
        boolean p=true;
        while(p){
        System.out.println("请输入学生的分数:");
        Scanner in=new Scanner(System.in);
        String s=in.next();
        try{
            for(int i=0;i<s.length();i++){
                if((s.charAt(i)<48||s.charAt(i)>57)){
                    throw new judgeException("输入错误,请输入一个数字:");
                }
            }
            try{
                int m=Integer.parseInt(s);
                if(m<0||m>100){
                    throw new judgeException2("请输入正确的分数");
                }
                if(m<60){
                    System.out.println("不及格");
                }
                else if(m>=60&&m<=69){
                    System.out.println("及格");
                }
                else if(m>=70&&m<=79){
                    System.out.println("中");
                }
                else if(m>=80&&m<=89){
                    System.out.println("良");
                }
                else if (m>=90&&m<=100){
                    System.out.println("优");
                }
            }
            catch(judgeException2 e){
                System.out.println(e.getMessage());
            }
        }
        catch (judgeException e){
            System.out.println(e.getMessage());
        }
        }
    }
}

java-10异常处理动手动脑的更多相关文章
- JAVA 数组作业——动手动脑以及课后实验性问题
		
JAVA课后作业——动手动脑 一:阅读并运行示例PassArray.java,观察并分析程序输出的结果,小结,然后与下页幻灯片所讲的内容进行对照. 1.源代码 // PassArray.java // ...
 - java异常处理动手动脑问题解决和课后总结
		
动手动脑 一.问题:请阅读并运行AboutException.java示例,然后通过后面的几页PPT了解Java中实现异常处理的基础知识. 1.源代码 import javax.swing.*; cl ...
 - java第二节课  java语法基础动手动脑
		
动手动脑1:枚举变量 运行EnumTest.java package test2; public class EnumTest { public static void main(String[ ...
 - java学习——关于java课件上动手动脑问题简单的分析
		
问题一:关于以下的代码为什么会产生错误的问题的简单分析. 第一个动手动脑提供了一下的代码,可以发现,在Foo的这个类中只定义了一个Foo(int)类型的构造函数,在之前的学习工程中,我们并没有接触到j ...
 - java语言课堂动手动脑
		
1 运行 TestInherits.java 示例,观察输出,注意总结父类与子类之间构造方法的调用关系修改Parent构造方法的代码,显式调用GrandParent的另一个构造函数,注意这句调用代码是 ...
 - java语法基础--动手动脑问题及课后实验问题
		
---恢复内容开始--- 动手动脑: 1:仔细阅读示例:EnumTest.java,运行它,分析运行结果 结果 :枚举类型是引用类型!枚举类型不属于原始数据类型,它的每个具体指都引用一个特定的对象.相 ...
 - java学习(4)——动手动脑
		
根据ppt所给的例子,运行的结果如下所示: ppt中出现的第二个动手动脑如下: 代码如下: 其运行结果如下: 作出简单的分析如下:有点类似于if 和else的关系,总是对应try和catch同层中的异 ...
 - java多态与异常处理——动手动脑
		
编写一个程序,此程序在运行时要求用户输入一个 整数,代表某门课的考试成绩,程序接着给出“不及格”.“及格”.“中”.“良”.“优”的结论. 要求程序必须具备足够的健壮性,不管用户输入什 么样的内容,都 ...
 - java文件课后动手动脑
		
package 第九周作业1; import java.io.File; import java.io.FileInputStream; import java.io.IOException; imp ...
 - JAVA课堂练习-动手动脑--数组
		
1.阅读并运行示例PassArray.java,观察并分析程序输出的结果,小结,然后与下页幻灯片所讲的内容进行对照. 源代码: public class PassArray { public stat ...
 
随机推荐
- LeetCode:螺旋矩阵【54】
			
LeetCode:螺旋矩阵[54] 题目描述 给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素. 示例 1: 输入: [ [ 1, 2, 3 ], ...
 - 流量分析系统----实现-echarts模拟迁移(bmap.js/china.js)
			
china.js: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> < ...
 - asp.net Cookie 用户登陆时记住我
			
/// <summary> /// 判断Cookie中存储的数据 /// </summary> protected void CheckUserCookie() { //先判断 ...
 - Swift进阶 - 12个技巧
			
听说你已经学习Swift几个月了,有没有想更进一步成为Swift高手的想法?我这里有11招秘技,各位施主且听我慢慢道来,结个善缘. 1. 扩展(Extension) 任务: 求数字的平方. // 菜鸟 ...
 - Dubbo框架入门介绍
			
背景 随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进. 单一应用架构 当网站流量很小时,只需一个 ...
 - mysql 触发器 存储过程 java调用
			
触发器和存储过程是为了提高SQL的运行效率. SQL语句先编译.后执行,而触发器与存储过程都会提前预编译完成,且只编译一次,供反复调用. 随着时代的进步,硬件与带宽的提升,触发器和存储过程提升效率并不 ...
 - 20145240 《Java程序设计》第五次实验报告
			
20145240 <Java程序设计>第五次实验报告 北京电子科技学院(BESTI)实验报告 课程:Java程序设计 班级:1452 指导教师:娄嘉鹏 实验日期:2016.05.06 实验 ...
 - C/C++ 字符串操作函数 思维导图梳理
			
这些常用的字符串操作函数都是包在string.h头文件中. 分享此图,方便大家记忆 <(^-^)> 选中图片点击右键,在新标签页中打开图片会更清晰
 - nginx日志中$request_body 十六进制字符(\\x22) 引号问题处理记录
			
在使用nginx记录访问日志时,发现在含有 request_body 的 PUT , POST 请求时,日志中会含有 x22 x9B x5C x09 x08 字符,不利于阅读和处理. 具体 支持 re ...
 - Maven webapp index.jsp报错
			
javax.servlet javax.servlet-api 3.1.0